簡體   English   中英

如何(擠壓)在MySQL 5.7 json列上插入選擇更新刪除

[英]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"]}

順便說說

  1. 選擇json列的sql命令? 可能是例子嗎?
    如果我想檢查mac值是否存在'c84wr8492eda'(獲取計數)
  2. 更新JSON列的SQL命令(替換)? 可能是例子嗎?
    如果我想將mac值設為'c84wr8492eda'的位置設為'aaaabbbbcccc'
  3. 刪除json列的sql命令? 可以舉例嗎? 如果我要刪除Mac值為'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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM