0

我在 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
4

1 回答 1

0

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

SUBSTRING_INDEX(GROUP_CONCAT(IF(active = 1, fruit.name, null) ORDER BY fruit.name ASC),',',3)
于 2012-07-30T15:11:43.950 回答