使用 select 将行添加到查询结果

Posted

技术标签:

【中文标题】使用 select 将行添加到查询结果【英文标题】:Add row to query result using select 【发布时间】:2010-10-18 19:50:26 【问题描述】:

是否可以用这样的文字扩展查询结果?

select name from users
union
select name from ('JASON');

select age, name from users
union
select age, name from (25,'Betty');

因此它返回表中的所有名称加上“JASON”或 (25,'Betty')。

【问题讨论】:

【参考方案1】:

是否可以用这样的文字扩展查询结果?

是的。

Select Name
From Customers
UNION ALL
Select 'Jason'
如果 Jason 不在结果集中,请使用 UNION 添加 Jason。 使用 UNION ALL 添加 Jason,无论他是否已经在结果集中。

【讨论】:

我正在使用 sql server 2005 并像我的第一个示例一样运行一个简单的联合,但我得到“不正确的语法”。是不是很像我的例子? 您如何始终将“Jason”作为返回联合列表中的第一项返回?【参考方案2】:

在 SQL Server 中,你会说:

Select name from users
UNION [ALL]
SELECT 'JASON'

在 Oracle 中,你会说

Select name from user
UNION [ALL]
Select 'JASON' from DUAL

【讨论】:

他指定了sql server:“from dual”是oracle only 对于 SQL Server 是否应该省略 ALL 周围的括号? 这里所有的括号表示它是一个可选元素。【参考方案3】:

你可以这样使用它:

SELECT  age, name
FROM    users
UNION
SELECT  25 AS age, 'Betty' AS name

使用UNION ALL 允许重复:如果您的用户中有一个 25 岁的 Betty,那么第二个查询将不会再次选择她,仅使用 UNION

【讨论】:

我必须将它们一一合并吗?有没有办法同时添加多行? @Alex:在 SQL Server 和 PostgreSQL 中,你可以做到SELECT age, name FROM users UNION SELECT * FROM (VALUES (25, 'Betty'), (26, 'Fatty')) q(age, name)

以上是关于使用 select 将行添加到查询结果的主要内容,如果未能解决你的问题,请参考以下文章

如何在同一查询中多次将行添加到特定数字

使用可能的组合将行转换为列

如何展平 SQL 查询的结果 - 将行转换为列?

使用可能的组合将行转换为列

在oracle中将行值添加到列

oracle中group by用法