gpt4 book ai didi

Mysql获取条件中描述的所有记录,即使它不存在于表中

转载 作者:可可西里 更新时间:2023-11-01 06:32:36 25 4
gpt4 key购买 nike

假设我有一个如下表:

我的表

+---------------+
| id | name |
+---------------+
| 1 | ABC |
+---------------+
| 2 | XYZ |
+---------------+
| 3 | PQR |
+---------------+
| 4 | LMN |
+---------------+

然后说我有这样的查询

select * from my_table where id in (1,2,3,4,5)

是否可以通过更改查询获得如下输出。

+---------------+
| id | name |
+---------------+
| 1 | ABC |
+---------------+
| 2 | XYZ |
+---------------+
| 3 | PQR |
+---------------+
| 4 | LMN |
+---------------+
| 5 | NULL |
+---------------+

我尝试使用 self JOIN 和其他条件,也谷歌了很多,但没有找到解决方案。

谁能提出解决方案?

最佳答案

不幸的是,mysql 没有像许多其他数据库那样生成序列的内置函数)。有(至少)两种方法:

将所需的值硬编码为子查询,然后左连接到您的表:

select x.id, t.name
from (select 1 id
union select 2
union select 3
union select 4
union select 5) x
left join my_table t on t.id = x.id

但这很乏味且难以编码和维护。

或者(正如我之前所做的那样)创建一个表(一次)并填充自然数(一次)以用作代理序列生成器:

create table numbers (num int);
insert into numbers values (1), (2), (3), ... etc

然后:

select n.num id, t.name
from numbers n
left join my_table t on t.id = n.num
where n.num in (1,2,3,4,5)

一旦设置并填充了大量数字,这种方法就非常方便。

您可以创建一个填充有日期的类似表格,以类似的方式使用,当并非所有日期都有数据时,这对于为范围内的每个日期生成数字非常方便。

关于Mysql获取条件中描述的所有记录,即使它不存在于表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27577867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com