[英]how to (crud) insert select update delete on mysql 5.7 json column
為了記錄用戶mac_address並計數mac_address來恢復用戶登錄名的PC或筆記本以控制用戶可用的最大值(例如,工作):
SELECT JSON_LENGTH(auth_list->'$.mac') FROM users WHERE username='admin'
所以我嘗試Step:01創建表
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 ;
步驟:02
INSERT INTO users ( username,auth_list )
VALUES('admin','{"mac":["b0fc361479de"]}')
步驟:03(命令沒有錯誤,但沒有插入新值)
UPDATE users SET auth_list = JSON_INSERT(auth_list , '$.mac','c84wr8492eda') WHERE username='admin'
我希望執行sql(Step02)命令后,它將使auth_list列的值結果像
{"mac": "b0fc361479de"}
至
{"mac": ["b0fc361479de","c84wr8492eda"]}
順便說說
q1:嘗試類似的方法:
MySQL [localhost+ ssl/test] SQL> select json_contains(auth_list,js
r8492eda'),'$.mac') from users;
+-------------------------------------------------------------+
| json_contains(auth_list,json_quote('c84wr8492eda'),'$.mac') |
+-------------------------------------------------------------+
| 1 |
+-------------------------------------------------------------+
q2:我認為您想在步驟03中使用JSON_ARRAY_APPEND而不是JSON_INSERT。
q3:您要完全刪除記錄還是僅刪除數組中的條目? 請仔細閱讀https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.