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
操作生成的结果集。
试试这个
如有错误请评论。
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;
我在 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
操作生成的结果集。
试试这个 如有错误请评论。
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;