Mysql 选择其他表中不匹配的行

Mysql 选择其他表中不匹配的行,mysql,Mysql,这个查询一开始似乎很简单 #table - user user_id - full_name - image 1 Jon-1 Jon-placeholder.png 2 Aax-2 Max-placeholder.png 3 Lie-3 Lie-placeholder.png 4 Man-4 Man-placeholder.png 5 Nik-5

这个查询一开始似乎很简单

#table - user
user_id - full_name  - image
 1        Jon-1        Jon-placeholder.png
 2        Aax-2        Max-placeholder.png
 3        Lie-3        Lie-placeholder.png
 4        Man-4        Man-placeholder.png
 5        Nik-5        Nik-placeholder.png
 6        Led-6        Led-placeholder.png
 7        Neo-7        Neo-placeholder.png

#table - user_contacts
id       -      user_id     -   contacts_id    -   created_date
 1                1                  2             2020-02-26 08:43:26
 2                1                  3             2020-02-26 08:43:26
 3                1                  5             2020-02-26 08:43:26
 4                3                  4             2020-02-26 08:43:26
 5                3                  5             2020-02-26 08:43:26
 6                7                  2             2020-02-26 08:43:26
我试图实现的是从user_contacts中检索所有contacts_id,其中user_id不等于user_id=1,用户Jon-1应该是这样的

#retrieved data
 user_id - full_name  - image
   4       Man-4        Man-placeholder.png
   6       Led-6        Led-placeholder.png
   7       Neo-7        Neo-placeholder.png  
必须检索用户\u id 6,7,4,因为用户\u id=1在“联系人\u id”列下的“用户\u联系人”表中没有这些id 第一个问题

SELECT            u.user_id, u.full_name, u.image
FROM              user u
NATURAL LEFT JOIN user_contacts cnt
WHERE             cnt.contacts_id IS NULL
第二个问题

SELECT user.user_id, user.full_name, user.image
FROM USER
WHERE user.user_id NOT IN (
SELECT user_contacts.contacts_id
FROM user_contacts
WHERE user_contacts.contacts_id IS NOT NULL)
第三个问题

SELECT            u.user_id, u.full_name, u.image
FROM              user u
NATURAL LEFT JOIN user_contacts cnt
WHERE             cnt.contacts_id IS NULL
不存在以下情况:

如果子查询中没有用户id:子查询将获得user=1的联系人


用户id 1:这确保未选择用户1。

对于我来说,结果必须是4、5和2。我无法假设为什么结果中会出现Led-6?草莓色。不,他们没有解决问题。你能再次检查你的预期结果吗?如果你检查我上面的帖子。您可以看到检索到的数据这是正确的检索到的数据,因此我尝试了上面的所有查询,大多数查询都检索到了错误的数据。感谢您,它工作正常。现在它返回用户ID 4,6,7@ShareKnowledge如果不是的话,我就不会发了-
SELECT a.* 
  FROM user a 
  LEFT 
  JOIN 
     ( SELECT uc.* 
         FROM user u 
         JOIN user_contacts uc 
           ON uc.user_id = u.user_id 
        WHERE u.full_name = 'Jon-1' 
     ) b 
    ON b.contacts_id = a.user_id 
 WHERE a.full_name <> 'Jon-1' 
   AND b.id IS NULL;
| user_id | full_name | image               |
| ------- | --------- | ------------------- |
| 4       | Man-4     | Man-placeholder.png |
| 6       | Led-6     | Led-placeholder.png |
| 7       | Neo-7     | Neo-placeholder.png |
SELECT
   user_id, full_name, image
FROM
   user
WHERE NOT user_id in (SELECT contacts_id from user_contacts WHERE user_contacts.user_id=1)
  AND user_id <> 1
SELECT a.* 
  FROM user a 
  LEFT 
  JOIN 
     ( SELECT uc.* 
         FROM user u 
         JOIN user_contacts uc 
           ON uc.user_id = u.user_id 
        WHERE u.full_name = 'Jon-1' 
     ) b 
    ON b.contacts_id = a.user_id 
 WHERE a.full_name <> 'Jon-1' 
   AND b.id IS NULL;