限制比方說,我有一個表:陣列切片/ GROUP_CONCAT在MySQL
i j --- a 1 a 2 a 3 a 4 b 5 b 6 b 7 b 8 b 9
Obvoiusly SELECT a, GROUP_CONCAT(b SEPARATOR ',') GROUP BY a
會給我
a 1,2,3,4 b 5,6,7,8,9
但是如果我想要得到結果僅有限數目的東西,例如2:
a 1,2 b 5,6
任何想法?
限制比方說,我有一個表:陣列切片/ GROUP_CONCAT在MySQL
i j --- a 1 a 2 a 3 a 4 b 5 b 6 b 7 b 8 b 9
Obvoiusly SELECT a, GROUP_CONCAT(b SEPARATOR ',') GROUP BY a
會給我
a 1,2,3,4 b 5,6,7,8,9
但是如果我想要得到結果僅有限數目的東西,例如2:
a 1,2 b 5,6
任何想法?
最好的辦法是使用SUBSTRING_INDEX()
和GROUP_CONCAT()
。
SELECT i, SUBSTRING_INDEX(GROUP_CONCAT(j), ',', 2)
FROM mytable
GROUP BY i;
您不必在此知道j
字段的長度。
一個解決方案是在計算聚合之前,將組中的行限制在前兩位。
SELECT t.i, GROUP_CONCAT(t.j)
FROM
(SELECT t1.i, t1.j
FROM mytable AS t1
LEFT JOIN mytable AS t2
ON (t1.i = t2.i AND t1.j >= t2.j)
GROUP BY t1.i, t1.j
HAVING COUNT(*) <= 2) AS t
GROUP BY t.i;
另一種解決辦法,如果你知道在j
值的長度是固定的,是簡單地在結果上使用SUBSTRING()
:
SELECT i, SUBSTRING(GROUP_CONCAT(j), 1, 3)
FROM mytable
GROUP BY i;
你想獲得有限數量的結果或特定子集嗎?即你只需要兩個結果,還是你想要1,2和a,4,5? – 2008-11-14 17:52:44