0

想要一个不存在数据的空行

你好。这是关于 MySQL Workbench 6.3 的。

我正在尝试为我的 select 语句中列出的每个项目返回结果列表,其中包括那些实际上不存在的项目。因此,如果我在我的 select 语句中列出 5 个项目并且只存在 3 个,我希望返回 5 行、3 个带有数据的实际行和另外 2 个仅显示 null 的行。有人可以告诉我如何在下面编辑我的查询以显示这个吗?谢谢 !

select emails from table where email in (dog, frog, cat, tiger, lizard);

实际结果(仅显示实际存在的 3 封电子邮件)

dog
cat
tiger

期望的结果

dog
null
cat
tiger
null
4

2 回答 2

1

期望的结果是不可能的。你不能期望 MySQL 按照它们在 IN() 运算符中的顺序返回选定的记录。

因此,我认为当您将所需结果更改为您知道有时在表格中未找到的结果时,您会更好,我认为您正在寻找。

询问

 SELECT 
    search_emails.email 
  , (
      CASE
         WHEN t.email IS NOT NULL
         THEN 'true' ELSE 'false' 
      END
    ) AS found
FROM (
  SELECT 'dog' AS email
  UNION
  SELECT 'frog' AS email
  UNION 
  SELECT 'cat' AS email
  UNION 
  SELECT 'tiger' AS email
  UNION 
  SELECT 'lizard' AS email
) AS search_emails 
LEFT JOIN 
 t
ON
 t.email = search_emails.email

结果

| email  | found |
| ------ | ----- |
| dog    | true  |
| cat    | true  |
| tiger  | true  |
| frog   | false |
| lizard | false |

演示

于 2019-02-08T16:03:35.383 回答
0
select emails from table where email in (dog, frog, cat, tiger, lizard) OR email IS NULL

确保提供的值IN (...)作为字符串提供。

于 2019-02-08T16:02:50.460 回答