Mysql模拟完全外部连接
我有2个表用户和订单,我想得到用户和他的订单计数Mysql模拟完全外部连接,mysql,sql,union,outer-join,jointable,Mysql,Sql,Union,Outer Join,Jointable,我有2个表用户和订单,我想得到用户和他的订单计数 SELECT `users`.*, `orders`.*,count(*) FROM `users` LEFT JOIN orders ON `users`.`id` = `orders`.`user_id` UNION SELECT `users`.*, `orders`.*,count(*) FROM users RIGHT JOIN orders ON `users`.`id` = `orders`.`user_id` 此查询选择
SELECT `users`.*, `orders`.*,count(*) FROM `users` LEFT JOIN orders ON
`users`.`id` = `orders`.`user_id`
UNION SELECT `users`.*, `orders`.*,count(*) FROM users
RIGHT JOIN orders ON `users`.`id` = `orders`.`user_id`
此查询选择有订单的用户和订单数量,但不选择没有订单的用户
我想要得到什么
user orders
John 5
Thomas 0
Mike 8
我得到了什么
user orders
John 5
Mike 8
如何获得没有订单的用户?您不需要完全的外部连接。假设
orders
表中的所有用户都具有对users
表的有效引用,则左侧外部联接应该可以:
SELECT u.*, count(o.user_id)
FROM `users` u LEFT JOIN
orders o
ON u.`id` = o.`user_id`
group by u.id
你不需要一个完整的外部连接。假设
orders
表中的所有用户都具有对users
表的有效引用,则左侧外部联接应该可以:
SELECT u.*, count(o.user_id)
FROM `users` u LEFT JOIN
orders o
ON u.`id` = o.`user_id`
group by u.id
以下查询将为您提供所有用户及其订单计数的列表,如果该用户没有订单,则包括0 另外,您确定ORDER_ID是用户表的FK吗?这对我来说似乎是反直觉的
SELECT U.NAME
,COUNT(O.ORDER_ID)
FROM USERS U
LEFT OUTER JOIN
ORDERS O
ON U.ID = O.ORDER_ID
GROUP BY
U.NAME
以下查询将为您提供所有用户及其订单计数的列表,如果该用户没有订单,则包括0 另外,您确定ORDER_ID是用户表的FK吗?这对我来说似乎是反直觉的
SELECT U.NAME
,COUNT(O.ORDER_ID)
FROM USERS U
LEFT OUTER JOIN
ORDERS O
ON U.ID = O.ORDER_ID
GROUP BY
U.NAME
如果你只想要
User
和Order
列,为什么要做SELECT*
?@Declan\K好的,但没有问题,我想如果你只想要User
和Order
列,为什么要做SELECT*
?@Declan\K好的,但我想没有问题