Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
这在 MySQL 中可能吗?
假设我有一张桌子:ID,姓名
现在,我想运行查询以查看这些名称是否存在“John,James,Bill”。假设数据库中只存在 James 的名称(ID:23,名称:James),我希望看到这个结果:
ID | Name ------------ null | John 23 | James null | Bill
有任何想法吗?
您需要在您的表和包含您希望搜索的名称列表的某个表之间建立一个外部连接UNION(您可以在运行查询之前创建这样的表,或者使用如下所示在查询中具体化这样的表)。了解SQL 连接。
UNION
SELECT * FROM my_table NATURAL RIGHT JOIN ( SELECT 'John' AS Name UNION ALL SELECT 'James' UNION ALL SELECT 'Bill' ) t
在sqlfiddle上查看。
您可以使用IN()比较功能来检查WHERE Name IN ('John', 'James', 'Bill')。如果您希望返回显示ID匹配的结果,您可以使用:
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