0

(1,2,3,4,5,6) のような ID のリストがあります。リスト内のこれらのIDのうち、テーブルに存在しないものがいくつあるかを知りたいです。どうすればいいですか?

-- table --
id    name
1     a
2     b
3     c   
4     d  
5     e 
6     f
7     g 

私が取得したIDのリストは1,2,3,4,5,6,7,8,9,10,11,12,13です

したがって、クエリを実行すると、テーブルにない8,9,10,11,12,13のような結果が得られるはずです

4

2 に答える 2

3

これにより、テーブルにないリスト内の ID のリストが返されます。

SELECT t1.id
FROM (SELECT 1 id
      UNION
      SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) t1
LEFT JOIN MyTable t2
ON t1.id = t2.id
WHERE t2.id IS NULL

このようなことを頻繁に行う場合は、定数を含む永続的なテーブルを作成することをお勧めします。

CREATE TABLE numbers (id int primary key);
INSERT INTO numbers (id) VALUES (0), (1), (2), ..., (1000);

次に、次のことができます。

SELECT t1.id
FROM numbers
JOIN MyTable t2
ON t1.id = t2.id
WHERE t1.id IN (1, 2, 3, 4, 5, 6)
AND t2.id IS NULL
于 2013-07-02T07:31:25.773 に答える