mysql-从2个不同的表中选择不同的行

时间:2018-09-22 13:17:06

标签: mysql sql

Table 1(pending_order)

Link

Table 2(user)

link

查询:

SELECT DISTINCT * FROM user,pending_order WHERE user.id= pending_order.user_id

预期o / p: 仅2行,因为用户1,2有2个待处理订单。但是我正在将pending_order表的所有行与user表合并。

2 个答案:

答案 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