假设我有两张桌子
一个名叫Baskets,
另一个名为Fruits。
Baskets-
basket_id,basket_name
1 - 篮子一
2 - 第二篮子
Fruits-
fruit_id,basket_id,fruit_name
1 - 1 - 香蕉
2 - 1 - Apple
3 - 2 - 梨
SELECT * FROM baskets
JOIN (SELECT GROUP_CONCAT(fruit_id SEPARATOR ', ') FROM fruits WHERE baskets.basket_id=fruits.basket_id) AS der_fruits
ON baskets.basket_id=der_fruits.basket_id
现在有了这个查询,我想获得2行(因为有2个篮子),里面有水果ID的列表。
像这样:
basket_id,fruits
1 - 1,2
2 - 3
但刚才我得到的是这个:
basket_id,fruits
2 - 1,2,3
问题是,我必须在DERIVED表中传递全局baskets.basket_id值。 MySQL中是否存在全局范围? 或者有没有办法在派生表中的变量中传递全局baskets.basket_id值?
答案 0 :(得分:0)
SELECT baskets.*,
(SELECT GROUP_CONCAT(fruits.fruit_name)
FROM fruits f
WHERE b.basket_id = f.basket_id) AS der_baskets
FROM baskets b
水果是子查询。我不明白为什么你两次定义关系。你有什么想做的我不明白吗?