如何从Mysql中的IN CLAUSE中获取NULL值?

时间:2015-04-15 08:46:59

标签: mysql

如果匹配记录存在,我们可以使用IN子句获得结果 如果记录不存在,是否可以获得NULL值。

例如:

如果表格中存在abc@example.comxyz@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

1 个答案:

答案 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