使用“IN”运算符强制显示未找到的条件值- mysql

djmepvbi  于 2022-11-21  发布在  Mysql
关注(0)|答案(1)|浏览(168)

如何使表中不存在的值用作搜索值,在结果中显示为“null”?
在这个例子中,“roger”不存在于Table中,但我需要强制它也出现。

SELECT `name`, `age` FROM `persons` WHERE `name` IN ('john','mike','jane','roger');

表格persons

| name | age |
|------|-----|
| john | 20  |
| mike | 25  |
| jane | 31  |

预期结果:

| name  | age   |
|-------|-------|
| john  | 20    |
| mike  | 25    |
| jane  | 31    |
| roger | null  |
oknwwptz

oknwwptz1#

一种方法是使用左外连接,如下所示:

select names.name, persons.age
from (select 'john' 
      union select 'mike'
      union select 'jane'
      union select 'roger') as names(name)
left outer join persons using (name);

另一种保持名称在一起的方法可以使用json_table的技巧:

select names.name, persons.age 
from json_table('["john", "mike", "jane", "roger"]', 
                '$[*]' columns (name text path '$')) names
left outer join persons using (name);

相关问题