0

これはMySQLで可能ですか?

私がテーブルを持っているとしましょう:ID、名前

ここで、クエリを実行して、これらの名前が「John、James、Bill」に存在するかどうかを確認します。Jamesという名前だけがデータベース(ID:23、Name:James)に存在すると仮定すると、次の結果が表示されます。

ID    | Name
------------
null  | John
  23  | James
null  | Bill

何か案は?

4

2 に答える 2

3

テーブルと、検索する名前のリストを含むテーブルとの間に外部結合が必要です(クエリを実行する前にそのようなテーブルを作成するか、UNION以下に示すようにクエリ内でそのようなテーブルをマテリアライズできます)。SQL結合について学びます。

SELECT * FROM my_table NATURAL RIGHT JOIN (
  SELECT 'John' AS Name UNION ALL SELECT 'James' UNION ALL SELECT 'Bill'
) t

sqlfiddleでそれを参照してください。

于 2012-08-31T16:11:30.830 に答える
0

IN()比較機能で確認できますWHERE Name IN ('John', 'James', 'Bill')。一致を示す結果を返したい場合はID、次を使用できます。

SELECT b.ID, a.Name
FROM sparkles a
LEFT JOIN (SELECT ID, Name FROM sparkles WHERE Name IN ('John', 'James', 'Bill')) b ON b.ID = a.ID
于 2012-08-31T16:12:40.410 に答える