选择没有';不存在于另一个表中


Select variables that don't exist in another table

我正在尝试执行一个php-sql查询,其中获取user_id不在另一个数据库表中的对象。这是我现在的问题:

SELECT * FROM table1 WHERE user_id='$show_id' ORDER BY id DESC LIMIT 0, 10

在里面,我检查它是否在我的另一张桌子上。只有当它不在表中时,它才会回显。问题是,它不会显示它在限制范围内的满10。

因此,我的想法是创建一个计数的sql查询,看看它是否存在于另一个数据库表中。

在我的过去,我只做过简单的sql查询(如上所示),没有做过很多多表查询,也没有把查询放在查询中。请帮忙!

您可以使用NOT EXISTS运算符:

SELECT * 
FROM table1 AS t
WHERE user_id='$show_id' 
  AND NOT EXISTS
      ( SELECT *
        FROM OtherTable AS ot
        WHERE ot.user_id = t.user_id
      )
ORDER BY id DESC
LIMIT 0, 10

您可以在一个查询中完成此操作:

SELECT *
FROM first_table
WHERE user_id NOT IN (
  SELECT user_id
  FROM second_table
)

这将从first_table获取user_id未出现在second_tableuser_id列中的所有记录

SELECT  *
  FROM   table1 t1
         LEFT OUTER JOIN table2 t2 on t2.user_id = t1.user_id
 WHERE   t1.user_id = '$show_id'
   AND   t2.user_id IS NULL
ORDER BY id DESC

我不确定,但听起来您正在寻找NOT EXISTS子查询:

SELECT * FROM table1
WHERE NOT EXISTS (select id from othertable where id = user_id) AND user_id='$show_id'
ORDER BY id DESC LIMIT 0, 10