1

重複の可能性: SQL: mysqlテーブルに存在しない値を取得
するテーブルで欠落しているIDを検索します

不思議に思うのですが、テーブルで見つからなかった値をどういうわけか教えてくれるクエリを作成することは可能ですか?

したがって、クエリがSELECT * FROM mytable WHERE id IN (1,2,3,4,5,6,7,8,9)あり、2,3,6,7,9のみが返された場合。1,4,5,8が見つかりませんでした。

手動で比較するのは少し難しいでしょう。これは、テーブル内のapx 2,000行以上で実行されるためです(IDはクエリにコピーできるcsvファイルを介して提供されます)

前もって感謝します

4

4 に答える 4

1

これはおそらくばかげていますが、SELECTクエリの結果を差し引くすべてのIDを含む一時テーブルを作成するのはどうでしょうか。

于 2013-01-17T12:29:28.740 に答える
1

テストされていませんが、理論的には:

Table 1:
+----+-----+
| id | num |
+----+-----+

Table 2:
+----+
| id |
+----+

表1には、探しているデータが含まれています(また、num任意のデータを含む任意のフィールドです)。表2には、CSVのIDが含まれています。

SQL:
SELECT COUNT(`Table1`.`num`) AS `count`
FROM `Table1`
LEFT JOIN `Table2` ON `Table1`.`id` = `Table2`.`id`
WHERE `count` = 0
于 2013-01-17T12:35:21.023 に答える
0

簡単な解決策は、csvファイルを開き、すべてのコンマを「union select」に置き換え、その行の前にselectを配置して、下部のクエリのクエリの最初の行として使用します。

したがって、1,2,3は

1つのユニオンを選択2つのユニオンを選択3

以下のクエリでこれを使用してください

    Select 1 union select 2 union select x -- replace this line with the line generated from your csv
    Except
    (
     Select id from mytable
    )
于 2013-01-17T12:44:53.457 に答える
0

どうですか:

SELECT *
   FROM (select 1 as f
               UNION
               SELECT 2 as f
               UNION
               SELECT 3 as f
               UNION
               SELECT 4 as f
               UNION
               SELECT 5 as f
               UNION
               SELECT 6 as f
               UNION
               SELECT 7 as f
               UNION
               SELECT 8 as f
               UNION
               SELECT 9 ) as s1
 WHERE f NOT IN (SELECT id FROM mytable);

于 2013-01-17T12:56:07.177 に答える