Table 1(pending_order)
Table 2(user)
查询:
SELECT DISTINCT * FROM user,pending_order WHERE user.id= pending_order.user_id
预期o / p:
仅2行,因为用户1,2有2个待处理订单。但是我正在将pending_order
表的所有行与user
表合并。
答案 0 :(得分:0)
您的查询应该可以使用。但我会这样写:
SELECT u.*, po.*
FROM user u JOIN
pending_order po
ON u.id = po.user_id;
这应该只返回用户2,该用户的订单待处理。
如果只希望有待处理订单的用户,请使用`exists:
select u.*
from user u
where exists (select 1
from pending_order po
where u.id = po.user_id
);
答案 1 :(得分:0)
在这种情况下,使用Inner Join
会更正确:
SELECT DISTINCT users.*
FROM user Inner Join pending_order
On user.id = pending_order.user_id
Join
类型(inner
/ full
/ right
..)是关于您希望在单个查询中合并多个相关表的结果的情况。
您可以在此处了解更多信息:https://www.tutorialspoint.com/sql/sql-using-joins.htm