【问题标题】:Find records which are not exists in other table查找其他表中不存在的记录
【发布时间】:2014-09-09 04:53:06
【问题描述】:

我有这个表结构:

-请求 request_id user_id

-用户 用户身份 company_id

-公司 company_id

我想从 user_id=? 的 requests 表中选择所有这些记录并且没有与用户的公司ID相同的此类记录。

【问题讨论】:

  • SELECT * FROM request WHERE user_id NOT IN(SELECT user_id FROM user WHERE user_id=123)
  • if user_id=123 and other user_id=456 for both users the company_id=999, so I want only those requests for user_id=123 from requests where user_id=456 has no entry in request table. 请解释一下这是什么意思?
  • @JayKazama,编辑了问题。这只是一个例子。

标签: mysql sql join exists


【解决方案1】:

这通常使用 LEFT JOIN 来实现:

SELECT r.*
FROM request r
JOIN user u ON r.user_id = u.user_id 
LEFT JOIN u1 ON u1.user_id != u.user_id AND u1.company_id = u.company_id
LEFT JOIN request r1 ON r1.user_id = u1.user_id
WHERE r1.user_id IS NULL

通过“哪里”我们说我们不想要“同一公司的用户,他们至少有 1 个请求”

【讨论】:

    猜你喜欢
    • 2018-07-13
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多