Mysql 从不同表的多行中选择一行中的数据
早些时候,我需要使用MSSQL的帮助,但现在我必须在其他机器上使用MySQL。 我有桌子:Mysql 从不同表的多行中选择一行中的数据,mysql,Mysql,早些时候,我需要使用MSSQL的帮助,但现在我必须在其他机器上使用MySQL。 我有桌子: ---------- ---------- ---------- | offers | | bids | | users | ---------- ---------- ---------- id id id .... offer_id first_name .... use
---------- ---------- ----------
| 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中没有任何内容),但没有多大成功。您需要先连接三个表,然后连接两列,并在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
这很快,谢谢,只是输入了一些更正。第2行:组名称(c.名,,,c.姓)作为全名。。。。第4行:删除了“出价”一词