【问题标题】:Add row to query result using select使用 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')。

【问题讨论】:

    标签: sql sql-server tsql select insert


    【解决方案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)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 2013-12-12
    • 1970-01-01
    相关资源
    最近更新 更多