0

好吧,我以前从来没有在这里问过问题,但是这里去。

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

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

4

2 回答 2

2

您可以执行以下操作:

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

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

不过,我真的建议不要使用这种类型的数据库结构。简单地标记一个名为“线程”的表,该表将有一个列来查看它是否被阅读或重要,这将是一个更加流畅的设计。

祝你好运!

于 2012-06-10T02:08:13.950 回答
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
于 2012-06-10T02:21:41.797 回答