使用 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 将行添加到查询结果的主要内容,如果未能解决你的问题,请参考以下文章