如果匹配记录存在,我们可以使用IN
子句获得结果
如果记录不存在,是否可以获得NULL
值。
例如:
如果表格中存在abc@example.com
和xyz@example.com
,则表格中不存在pqr@example.com
并运行此query
SELECT `users`.`email_id`,`users`.`user_id`
FROM `users` WHERE `users`.`email_id`
IN ('abc@example.com','xyz@example.com','pqr@example.com')
结果将是
email_id | user_id
-----------------+--------
abc@example.com | 1
xyz@example.com | 2
但是有可能以这种形式得到结果:
email_id | user_id
----------------+------------
abc@example.com | 1
xyz@example.com | 2
pqr@example.com | NULL --or some value
答案 0 :(得分:-1)
有可能但不能用IN,你可以将这个返回三个不同行的电子邮件的查询结合起来:
SELECT 'abc@example.com' AS email
UNION ALL SELECT 'xyz@example.com'
UNION ALL SELECT 'pqr@example.com'
使用users
表,使用LEFT JOIN:
SELECT e.email, users.user_id
FROM (
SELECT 'abc@example.com' AS email
UNION ALL SELECT 'xyz@example.com'
UNION ALL SELECT 'pqr@example.com'
) e LEFT JOIN users
ON e.email = users.email_id