我正在尝试执行一个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_table
的user_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