2017-08-30 26 views
0

算JSON項目我有表渠道:如何在mysql中

+----+----------------+---------+ 
| id | sort   | bouquet | 
+----+----------------+---------+ 
| 1 | ["2","3","73"] | ["1"] | 
| 12 | ["3","73"]  | ["28"] | 
+----+----------------+---------+ 

,並需要獲得計數特定boquet在排序字段項...例如:

花束1有3個項目排序 花束12有2個項目進行排序

我嘗試使用mysql中此查詢,但我沒有得到我的想法如何計算排序字段項目數:

SELECT COUNT(sort) AS total_channels FROM channels WHERE JSON_SEARCH(bouquet, 'one', "1") IS NOT NULL; 

我總是得到:

+----------------+ 
| total_channels | 
+----------------+ 
|    1 | 
+----------------+ 

這是不正確。

+2

你看了關於[JSON_LENGTH()](https://dev.mysql.com /doc/refman/5.7/en/json-attribute-functions.html#function_json-length)? –

+0

使用SELECT JSON_LENGTH(花束)FROM通道;我得到1 – John

+1

然後嘗試'SELECT JSON_LENGTH(排序)FROM channels;' – RiggsFolly

回答

2

使用上面的幫助,我得出這樣的:

SELECT JSON_LENGTH(sort) FROM channels WHERE bouquet='["1"]'; 

,我也得到正確的計數:

mysql> SELECT JSON_LENGTH(sort) FROM channels WHERE bouquet='["28"]'; 
+-------------------+ 
| JSON_LENGTH(sort) | 
+-------------------+ 
|     2 | 
+-------------------+ 
1 row in set (0.00 sec)