查找所有不符合条件的行,MySQLi MySQL PHP

时间:2012-06-10 02:04:00

标签: php mysql mysqli

好吧,我以前从未问过这个问题,但是这里有。

在我的PHP脚本中,我目前有一个查询,它检索threads_read表中与用户ID匹配的所有线程(记录所有读取的线程ID,Unix时间戳和用户ID)。然后,我使用另一个查询来检索important_threads表中包含线程ID的所有匹配行。

这可能是一个非常简单的问题,但我对MySQL(i)并不太熟悉,但我如何进行查询以检索important_threads表中的所有NON匹配行? / p>

2 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

SELECT * FROM threads_read WHERE id NOT IN (SELECT id FROM important_threads)

这有点资源,但是它可以完成这项工作。

但我真的建议不要使用这种类型的数据库结构。只需标记一个名为“线程”的表格,该表格中有一列可以看到它是否被读取或重要,这将是一个更流畅的设计。

祝你好运!

答案 1 :(得分:2)

您可以在important_threads表上执行LEFT JOIN,只获取表中没有匹配项的行:

SELECT 
    a.*
FROM 
    threads_read a
LEFT JOIN
    important_threads b ON a.id = b.id
WHERE 
    a.user_id = 14 
    AND 
    b.id IS NULL