我在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
答案 0 :(得分:0)
您可以使用SUBSTRING_INDEX仅获得前3个水果。
SUBSTRING_INDEX(GROUP_CONCAT(IF(active = 1, fruit.name, null) ORDER BY fruit.name ASC),',',3)