2012-07-30 60 views
0

我有3代表在MySQL與LEFT有限公司GROUP_CONCAT JOIN和IF語句

fruit

id| fruit 
--+------- 
1 | apple 
2 | banana 
3 | mango 
4 | plum 
5 | pear 
6 | cherry 

list

id| name 
--+------------ 
1 | first list 
2 | second list 

list_content

id| list_id | fruit_id | active 
--+---------+----------+------- 
1 |1  |1   |1 
2 |1  |2   |1 
3 |1  |3   |1 
4 |2  |1   |0 
5 |2  |6   |1 
6 |2  |5   |1 
7 |2  |4   |1 
8 |2  |3   |1 

因此,我需要一個按id降序排列的列表,最多由3個逗號分隔的活動元素(如果active = 1)按fruit.name按升序排序。像這樣

lists | fruits 
-------+------------------ 
list 2 | cherry, mango, pear 
list 1 | apple, banana, mango 

回答

0

您可以使用SUBSTRING_INDEX只拿到第3種水果。

SUBSTRING_INDEX(GROUP_CONCAT(IF(active = 1, fruit.name, null) ORDER BY fruit.name ASC),',',3) 
+0

我該如何滲透查詢中的IF語句? – Goldie 2012-07-30 15:52:20

+0

'GROUP_CONCAT'忽略'null',所以你可以把它放在那裏,但是如果你可以把它放在你的WHERE/ON子句中會更好。 – Vatev 2012-07-30 15:57:10