mysql:获取具有给定值的静态列,如果存在值,则获取具有id的另一列

时间:2012-08-31 16:08:42

标签: mysql select

这在MySQL中是否可行?

假设我有一张桌子: ID,名称

现在,我想运行一个查询,看看这些名字是否存在“John,James,Bill”。假设只有James存在于数据库中(ID:23,Name:James),我希望看到这个结果:

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

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您的表和某个表之间需要一个外连接,其中包含您要搜索的名称列表(您可以在运行查询之前创建这样的表,或者实现这样的表查询中的表使用UNION,如下所示)。了解SQL joins

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

sqlfiddle上查看。

答案 1 :(得分: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