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

wixjitnu  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(390)
Table 1(pending_order)

Table 2(user)


查询:

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

预期o/p:只有2行,因为有2个来自用户1,2的挂起订单。但我得到了所有的排 pending_order 表格与 user table。

mbzjlibv

mbzjlibv1#

使用起来会更正确 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
qv7cva1a

qv7cva1a2#

你的查询应该有效。但我会这样写:

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
             );

相关问题