MYSQL: 如何将左连接结果拆分为多行

MYSQL: How to split left join results in multiple rows

我在 table 中有一些数据,如下所示:

用户

user_id  name
1        John
2        William
3        cindy
4        Julian
5        Monique

出书

user_id  book_id
1        1
2        3
3        5
5        10

黑胶出

user_id  vinyl_id
1        6
2        7
3        8
4        9

我想要一个会产生此输出的 SELECT 语句:

user_id  item_out
1        1 
1        6
2        3
2        7
3        5     
3        8 
4        9
5        10

因此,按照 user_id 和 book_id/vinyl_id 的顺序。这可能吗?

您必须 UNION ALL 来自两个单独查询的结果:

SELECT u.user_id, book_id AS item_out
FROM user AS u
INNER JOIN books_out AS b ON u.user_id = b.user_id

UNION ALL

SELECT u.user_id, vinyl_id AS item_out
FROM user AS u
INNER JOIN vinyl_out AS v ON u.user_id = v.user_id
ORDER BY user_id, item_out

第一个查询 returns 来自 books_out table,而第二个 returns 来自 vinyl_out table.

注意: ORDER BY 子句应用于 UNION ALL 操作生成的结果集。

Demo here

试试这个 如有错误请评论。

select u.user_id,b.book_id as item_out from user u left join 
 books_out b on u.user_id = b.user_id 
 UNION ALL
 select u.user_id,v.vinyl_id as item_out from user u left join 
 vinyl_out v on u.user_id = v.user_id 
 order by user_id;