2016-09-01 4 views
0

これが可能かどうか、またはテーブルにない文字列を判別する方法を尋ねたかっただけです。例えば内の名前(「NAME1」、「name2の」、「NAME3」)mySQL "IN"関数が見つからないリストを返す

  • シナリオがNAME1とNAME2あるtable_personから

    選択名前は私のテーブルの上に提供されていますが、私が表示したいことはNAME3です私が追加していないことが何であるかを知りたいからです。

+1

あなたは 'NOT IN'について質問していますか? –

+0

[MySQL "NOT IN"クエリの可能な重複](http://stackoverflow.com/questions/1519272/mysql-not-in-query) –

+1

コールネーム1、ネーム2、およびネーム3をBに設定することができます。セットAはすべてあなたのtable_personのデータ。セットAにレコードが存在しないセットBのすべてのレコードが必要ですか? – xQbert

答えて

2

最悪の方法で遊んでいる可能性があります。

クエリが解決され反転と組み合わせる

SELECT 
suppliedArgTable.name 
FROM 
(
SELECT 'name1' AS name 
UNION 
SELECT 'name2' 
UNION 
SELECT 'name3' 
) AS suppliedArgTable 

LEFT JOIN 

table_person TP ON TP.name = suppliedArgTable.name 
WHERE TP.name IS NULL; 

http://sqlfiddle.com/#!9/edcbe/2/0

+0

これはまあそんなことですが、チェックする引数が100個あり、そのうちの14個がテーブルにない場合はどうなりますか? –

+0

私はちょうどその逆を示しました。しかし、私はこれをお勧めしません。アプリケーションロジックでこの種の仕事をうまくやってください。 – 1000111

+0

正直言って、これを回避する方法は考えられません。比較したいマスタデータセットはデータベースにありません。だから最初にいくつかの方法をそこに持っていなければなりません。まず、それをテーブルにロードしてから、これを行います。 – xQbert

0

NOT INを推奨されません。

(リスト)('name1','name2','name3')(一時的な)テーブルに。 temp_listtable_person のデータとクエリは次のようになります。

select name from temp_list 
where name not in (
    select distinct(name) from table_person 
) 

distinctダブルスを削除します。 (MySQL: Select only unique values from a columnも参照してください)

関連する問題