0

这在 MySQL 中可能吗?

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

现在,我想运行查询以查看这些名称是否存在“John,James,Bill”。假设数据库中只存在 James 的名称(ID:23,名称: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 回答