我是 MySql 查詢的新手:
以下是我遇到的問題。
所以我將 json_data 保存為:我正在使用 PHP json_encode 將陣列轉換為 JSON 格式并將其直接存盤在資料列中。
| ID | 資料 |
|---|---|
| 1 | {“abc”:123,“947”:234,“874”:123} |
| 2 | {“abc”:369,“659”:123,“523”:123} |
我只想獲取123在其資料列中具有值的用戶總數(COUNT)。
提前致謝。
uj5u.com熱心網友回復:
我正在使用 PHP json_encode 將陣列轉換為 JSON 格式并將其直接存盤在資料列中。
您可以使用 JSON_SEARCH() 函式。但它只搜索字串型別的資料。因此,要創建有效的查詢,您必須將值作為字串而不是數字存盤到 JSON 中。
CREATE TABLE test (id INT, data JSON) SELECT 1 id, '{"abc": "123", "947": "234", "874": "123"}' data UNION ALL SELECT 2, '{"abc": "369", "659": "123", "523": "123"}' UNION ALL SELECT 2, '{"abc": "369", "659": "456", "523": "567"}';
SELECT id, JSON_LENGTH(JSON_SEARCH(data, 'all', '123')) AS values_amount FROM test;編號 | values_amount -: | ------------: 1 | 2 2 | 2 2 | 空值
SELECT id FROM test WHERE JSON_LENGTH(JSON_SEARCH(data, 'all', '123'));| 編號 | | -: | | 1 | | 2 |
SELECT id, JSON_LENGTH(JSON_SEARCH(data, 'all', '123')) AS values_amount FROM test HAVING values_amount;編號 | values_amount -: | ------------: 1 | 2 2 | 2
db<>在這里擺弄
uj5u.com熱心網友回復:
您也可以在進行 sql 查詢后通過 PHP 嘗試它,您會得到物件 $YOUR_USER_SQL_ARRAY
foreach($YOUR_USER_SQL_ARRAY as $userID => $userValues){
$userValuesdecoded = json_decode($userValues)
$counter ;
foreach($userValuesdecoded as $key => $value){
if($value == 123) $counter ;
}
}
這樣,您可以獲得所有用戶的 123 的數量,即使每個用戶的數量超過“123”
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/437549.html
上一篇:從查詢sql中獲取二維陣列
