gpt4 book ai didi

mysql - 当查询至少返回一个结果时添加一个虚拟行

转载 作者:行者123 更新时间:2023-11-29 02:23:44 25 4
gpt4 key购买 nike

我已经看到一些关于“当不存在时如何添加行”或“当没有找到结果时如何返回虚拟行”的 SQL 问题,但我想不出一种方法来获得相反的结果.我的目标是在至少找到一个结果时添加一行。但是,当没有找到结果时,不应返回任何内容。

给定以下 users 表:

ID     USERNAME
------------------
1 bob
2 alice

还有一个虚拟行(不存储在数据库中):

ID     USERNAME
------------------
0 dummy

这是我想要得到的结果:

# Query: find users with ID 1.

ID USERNAME
------------------
1 bob
0 dummy

# Query: find users with ID 3.

(empty set)

# Query: find users with ID 0.

(empty set)

当然,虚拟行只添加一次(而不是每个实际记录一次)。现在,我正在处理以下查询...

SELECT * FROM (
SELECT * FROM users WHERE id = 1
UNION SELECT 0, 'dummy'
)

然而,这会在所有情况下添加虚拟行,即使第一个子SELECT 返回一个空集。有什么办法可以只在必要时添加我的行吗?

注意:这是一个 MySQL 数据库。

最佳答案

试试这个:

select id, username
from users
where id = 1
union all
select *
from (select 0 as id, 'dummy' as username) t
where exists (select 1 from users where id = 1);

关于mysql - 当查询至少返回一个结果时添加一个虚拟行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26876148/

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