带有LEFT JOIN和IF语句的GROUP_CONCAT限制

时间:2012-07-30 14:47:13

标签: mysql left-join substring group-concat csv

我在MySQL中有3个表

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

1 个答案:

答案 0 :(得分:0)

您可以使用SUBSTRING_INDEX仅获得前3个水果。

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