这在MySQL中是否可行?
假设我有一张桌子: ID,名称
现在,我想运行一个查询,看看这些名字是否存在“John,James,Bill”。假设只有James存在于数据库中(ID:23,Name:James),我希望看到这个结果:
ID | Name
------------
null | John
23 | James
null | Bill
有什么想法吗?
答案 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