1

私には2つのテーブルがdataありpagedataテーブルにはいくつかのレコードがあり、いくつかのdataレコードIDはpageテーブルに保存されます。

今、テーブルにないテーブルを選択idしてtitleフォームしたいです。だから私はこのクエリを書きました:datapage

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

4 に答える 4

2

これはサブクエリを使用したものですが、結合はありません。

SELECT id, title
FROM data
WHERE id NOT IN (SELECT data_id FROM page)
ORDER BY title ASC
于 2013-02-19T08:36:43.840 に答える
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
于 2013-02-19T08:33:34.023 に答える
1

NOT IN を使用すると、必要なものが得られますが、データベース システム (およびインデックスの種類) によっては、これが最適な (最速の) ソリューションとはなりません。多くの場合、存在しない方が高速になります。しかし、走行距離は異なる場合があります。

試してみる:

SELECT id, title FROM data
WHERE NOT EXISTS (SELECT * FROM page WHERE page.data_id = data.id)
ORDER BY title ASC
于 2013-02-19T09:22:12.197 に答える
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;
于 2013-02-19T08:36:50.667 に答える