之前我需要使用MSSQL帮助,但现在我必须在其他机器上使用MySQL。 我有桌子:
---------- ---------- ----------
| offers | | bids | | users |
---------- ---------- ----------
id id id
.... offer_id first_name
.... user_id last_name
.... .....
现在我需要为每个商品ID分配用户的姓氏和名字
offers.id = bids.offers_id and bids.user_id = users.id
示例:
offers bids users
------------------ ---------------------- ----------------
|id| ...| ....| |id| offer_id| user_id| |id| first_name| last_name|
------------------ ----------------------- --------------------------
|1 | ...|.....| |1 | 1 | 2 | | 2| Peter | Jackson |
|2 | ...|.....| |2 | 1 | 3 | | 3| Adam | Black |
|3 | 1 | 6 | | 4| Roy | Wright |
|4 | 2 | 5 | | 5| Eva | Cekovsky |
|5 | 2 | 7 | | 6| Martin | Tyson |
| 7| Vera | Vornel |
输出应该是这样的
offer_id full_name
--------------------------------------------------------------
| 1 | Peter Jackson, Adam Black, Martin Tyson |
--------------------------------------------------------------
| 2 | Eva Cekowsky, Vera Vornel |
--------------------------------------------------------------
我可以使用CONCAT
轻松地使用名字连接姓氏,如果每个数据都在同一个表中,那么这样做,但是,我无法弄明白。试图使用GROUP_CONCAT(因为MySQL中没有STUFF)但没有太大的成功。
答案 0 :(得分:1)
您需要先连接这三个表,然后对两列进行nconcactenten并在GROUP_CONCAT
中传递此表达式。
SELECT b.offer_id,
GROUP_CONCAT(CONCAT(c.first_name, ' ', c.last_name)) as Full_name
FROM offers a
INNER JOIN bids b
ON a.id = b.offer_id
INNER JOIN users c
ON b.user_id = c.id
GROUP BY b.offer_id