不在我的查询中不工作

时间:2013-02-19 08:32:19

标签: mysql sql

我有2个表datapage,在data表中我有一些记录,一些data个记录ID将存储在page表中

现在我希望选择idtitle表格data表格不在page表格上。 所以我写了这个查询:

SELECT d.id,d.title
FROM data AS d, page AS p
WHERE d.id NOT IN (p.data_id)
ORDER BY d.title ASC

此查询将起作用,但当page表为空时,此查询无法恢复记录!

4 个答案:

答案 0 :(得分:2)

使用LEFT JOIN

SELECT  a.*
FROM    data a
        LEFT JOIN page b
            ON a.ID = b.data_id
WHERE   b.data_id IS NULL
ORDER   BY a.title ASC

答案 1 :(得分:2)

这是子查询,但没有连接:

SELECT id, title
FROM data
WHERE id NOT IN (SELECT data_id FROM page)
ORDER BY title ASC

答案 2 :(得分:1)

NOT IN将为您提供您想要的内容,但根据您的数据库系统(以及索引类型),这将不是最佳(最快)的解决方案。更常见的是,EXISTS不会更快。但你的里程可能会有所不同。

试一试:

SELECT id, title FROM data
WHERE NOT EXISTS (SELECT * FROM page WHERE page.data_id = data.id)
ORDER BY title ASC

答案 3 :(得分:0)

我认为您正在尝试确定data没有page的内容:

SELECT d.id, d.title
FROM data d
WHERE d.id NOT IN (
    SELECT data_id FROM page
)
ORDER BY d.title ASC;
相关问题