我正在尝试执行php sql查询,其中我获取的user_id不在另一个数据库表中的对象。这是我现在的查询:
SELECT * FROM table1 WHERE user_id='$show_id' ORDER BY id DESC LIMIT 0, 10
在里面,我检查它是否在我的另一张桌子里。只有在表中不存在时才会回显。问题是,它不会在限制中显示满10个。
所以我的想法是创建一个sql查询,计算它是否存在于另一个数据库表中。
在我过去,我只完成了简单的SQL查询(如上所示),并且没有很多多表查询,也没有在查询中放置查询。请帮忙!
答案 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_id
列second_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