簡體   English   中英

返回SQL LIKE&GROUP BY結果

[英]Returning SQL LIKE & GROUP BY results

我在數據庫中有一個非常簡單的表,其中包含3列名為people列。 例:

user           id             notes
john           01             has red hair, last logged in 02/04/12
tony           02             has brown hair, last logged in 04/03/12
brian          03             has brown hair, last logged in 03/06/13
amanda         04             has blonde hair, last logged in 05/07/14
…

如果我想按注釋字段分組並進行計數,則第2行和第3行顯示為1,因為登錄日期不同; 我想做的是砍掉日期和合並並純粹按頭發顏色計算,例如,如果我運行查詢:

SELECT `notes`, COUNT( `user` ) AS Count 
FROM `people` 
WHERE `notes` LIKE "%hair%" GROUP BY `notes`;

我得到的結果是:

+-----------------------------------------+-------+
|notes                                    | Count |
+-----------------------------------------+-------+
|has red hair, last logged in 02/04/12    |      1|
|has brown hair, last logged in 04/03/12  |      1|
|has brown hair, last logged in 03/06/13  |      1|
|has blonde hair, last logged in 05/07/14 |      1|
+-----------------------------------------+-------+

想要達到以下結果:

+-------------------+------+
|notes              |Count | 
+-------------------+------+
|has red hair       |     1|
|has brown hair     |     2|
|has blonde hair    |     1|
+-------------------+------+

這是可能嗎?

干杯。

您可以使用SUBSTRING_INDEX來執行此操作,如下所示:

SELECT SUBSTRING_INDEX(`notes`, ',', 1), COUNT( `user` ) AS Count
FROM `people`
WHERE `notes` LIKE "%hair%"
GROUP BY SUBSTRING_INDEX(`notes`, ',', 1)

當然這是一個有點骯臟的解決方法。 更好的方法是分離頭發顏色,但我意識到這可能並不總是可行的。

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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