为了记录用户的mac\u地址并计算mac\u地址以恢复用户登录的pc或笔记本以控制用户可用的最大值,例如(它是工作的):
SELECT JSON_LENGTH(auth_list->'$.mac') FROM users WHERE username='admin'
所以我试着step:01 create table
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`username` varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT 'username',
`auth_list` json DEFAULT NULL COMMENT 'mac address list',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;
step:02
INSERT INTO users ( username,auth_list )
VALUES('admin','{"mac":["b0fc361479de"]}')
step:03 (命令无错误,但不插入新值)
UPDATE users SET auth_list = JSON_INSERT(auth_list , '$.mac','c84wr8492eda') WHERE username='admin'
我希望在执行sql(step02)命令后,它将使auth\ u list列的值结果像
{"mac": "b0fc361479de"}
至
{"mac": ["b0fc361479de","c84wr8492eda"]}
顺便说一句
选择json列的sql命令?可以举个例子吗?
如果我想检查mac值是否存在'c84wr8492eda'(get count)
更新json列的sql命令(替换)?可以举个例子吗?
如果我想把mac值为'c84wr8492eda'的地方改为'aaaabbccc'
删除json列的sql命令?可以举个例子吗?如果要删除mac值为“c84wr8492eda”的项
1条答案
按热度按时间0s7z1bwu1#
问题1:尝试以下方法:
问题2:我认为您希望在步骤03中使用json_array_append而不是json_insert。
问题3:您想完全删除记录还是只删除数组中的条目?请细读https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html