选择另一个表中不存在的变量

时间:2012-01-27 23:46:34

标签: php sql

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

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

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

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

在我过去,我只完成了简单的SQL查询(如上所示),并且没有很多多表查询,也没有在查询中放置查询。请帮忙!

4 个答案:

答案 0 :(得分:2)

您可以使用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

答案 1 :(得分:2)

您可以在一个查询中执行此操作:

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

这将获取first_table user_id user_idsecond_table中{{1}}未发生{{1}}的所有记录

答案 2 :(得分:2)

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

答案 3 :(得分:1)

我不确定,但听起来你正在寻找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