SELECT WHERE IN - mySQL

vsh*_*ale 11 mysql select where

假设我有以下表格:

 ID, Name 
 1, John 
 2, Jim 
 3, Steve 
 4, Tom
Run Code Online (Sandbox Code Playgroud)

我运行以下查询

SELECT Id FROM Table WHERE NAME IN ('John', 'Jim', 'Bill');
Run Code Online (Sandbox Code Playgroud)

我希望得到类似的东西:

ID
1
2
NULL or 0
Run Code Online (Sandbox Code Playgroud)

可能吗?

小智 5

这个怎么样?

SELECT Id FROM Table WHERE NAME IN ('John', 'Jim', 'Bill')
   UNION
SELECT null;
Run Code Online (Sandbox Code Playgroud)


Ed *_*bbs 5

首先创建一个您正在寻找的名称子查询,然后将子查询加入到您的表中:

SELECT myTable.ID
FROM (
  SELECT 'John' AS Name
  UNION SELECT 'Jim'
  UNION SELECT 'Bill'
) NameList
LEFT JOIN myTable ON NameList.Name = myTable.Name
Run Code Online (Sandbox Code Playgroud)

这将返回null未找到的每个名称.要改为返回零,只需用SELECT COALESCE(myTable.ID, 0)而不是启动查询SELECT myTable.ID.

有一个SQL小提琴这里.