Mysql如何查询没有订单的用户?

假设有一个Order表和一个User表, 需要在一条语句里面查询所有没有订单的用户应该怎么写?

阅读 6.3k
6 个回答

SELECT U.ID AS UserID
FROM Users U
LEFT JOIN Order O ON O.UserID = U.ID
WHERE O.ID IS NULL

select userid from user where userid not in (select distinct userid from order)
大致这样

至少两个表的字段要给出吧,他们之间的关系要说清楚吧……

select * from user
where not exists (select 1 from trade where userid=user. id)

猜测你的表结构,仅供参考,当然用join和多表查询也是可以的

你的表结构是什么样子啊,我觉得可以加一个状态之类的标识,这样可以省很多事情

新手上路,请多包涵

那个的看你做什么用,如果查询单条, select a.* from table a where not exists(select 1 from table b where a.id = b.id) limit 1这样应该在毫秒返回
如果查询所有就用
selecta.* from table a left join table b on a.id = b.id where b.id IS NULL这样会比较快,查询共同的直接inner join反正mysql不咋好用把笛卡尔积计算方式封装了,特麻烦,不过谁叫他免费

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题