2011-06-23 8 views
0

は、それが持っている私は私のデータベースでMySQLのクエリは、「いない値が存在する」私が知りたい

1,2,3,4-

以下のように4番号を持っている場合は行うことが可能ですデータは

私はデータベースを照会し、1つのクエリ

0123でを返すことができますどのように

1,2,3,5,6,7-

次のように存在しています

+1

のErm、 '4を選択FROM [TableName] '? – Widor

+1

これはあなたが必要とするかもしれません:http://stackoverflow.com/questions/2886797/select-back-things-that-dont-exist – Mike

+0

マイクありがとうございます。 – Wara

答えて

1
CREATE TABLE `example` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB; 

INSERT INTO example VALUES (1),(2),(3),(5),(6),(7); 

SELECT t2.id FROM example AS t1 
RIGHT JOIN (
    SELECT 1 AS id UNION 
    SELECT 2 AS id UNION 
    SELECT 3 AS id UNION 
    SELECT 4 AS id 
) AS t2 
ON t1.id = t2.id 
WHERE t1.id IS NULL; 

+----+ 
| id | 
+----+ 
| 4 | 
+----+ 

や一時テーブルを使用するに助言してください:

CREATE TEMPORARY TABLE `tmp` (
    `id` int(11) DEFAULT NULL 
) ENGINE=InnoDB; 

INSERT INTO tmp VALUES (4); 

SELECT t2.id FROM example AS t1 
RIGHT JOIN tmp AS t2 
ON t1.id = t2.id 
WHERE t1.id IS NULL; 

少し周りの事を切り替え、何が起こっているかを確認するには:

SELECT t1.id, t2.id FROM example AS t1 
RIGHT JOIN (
    SELECT 1 AS id UNION 
    SELECT 2 AS id UNION 
    SELECT 3 AS id UNION 
    SELECT 4 AS id 
) AS t2 
ON t1.id = t2.id; 

+------+----+ 
| id | id | 
+------+----+ 
| 1 | 1 | 
| 2 | 2 | 
| 3 | 3 | 
| NULL | 4 | 
+------+----+ 
+0

このクエリを使用するたびにテーブルを作成する必要がありましたか? – Wara

+0

'example'テーブルは?いいえ、それはあなたにそれがどのように機能するかのアイデアを伝えるだけです。 'example'テーブルはあなたの実際のテーブルを置き換えるだけのものです。 – Mike

+0

もう一度マイクに感謝してありがとうございます – Wara

1
SELECT id FROM 
    (SELECT 1 AS id UNION 
    SELECT 2 UNION 
    SELECT 3 UNION 
    SELECT 4 
) AS TBL1 
WHERE id NOT IN (SELECT id FROM thetable) 
+0

@ypercubeありがとう... – tamilnad