1

假设我有 2 张桌子
,一张名为 Baskets,
另一张名为 Fruits。

篮子- 篮子
ID,篮子名称
1 - 篮子一
2 - 篮子二

Fruits
-fruit_id、basket_id、fruit_name
1 - 1 - 香蕉
2 - 1 - 苹果
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 值?

4

1 回答 1

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

水果是一个子查询。我不明白你为什么两次定义这种关系。有什么你想做的事情我不明白吗?

于 2011-11-22T02:17:57.940 回答