将静态值添加到SQL查询的结果中

Zek*_*ell 21 sql db2

我想知道是否有办法用SQL查询来实现这一点.

我有一张桌子,我们称之为"LISTOFTHINGS",它有两个感兴趣的领域"ID"和"NAMEOFTHING"

我想要做的是构造一个查询,以便返回的内容是此查询的结果:

SELECT ID, NAMEOFTHING FROM LISTOFTHINGS ORDER BY NAMEOFTHING
Run Code Online (Sandbox Code Playgroud)

并在上面的查询的第一行之前添加一行,其中"-1,'ALL THINGs'"作为值.

因此,如果该表具有以下三个条目:

1, 'THING 1'
3, 'THING 3'
2, 'THING 2'
Run Code Online (Sandbox Code Playgroud)

然后我想要的结果看起来像这样:

-1, 'ALL THINGS'
1, 'THING 1'
2, 'THING 2'
3, 'THING 3'
Run Code Online (Sandbox Code Playgroud)

我知道我可以执行查询并使用代码创建列表,但在我正在使用它的VB6程序中,我有一个第三方应用程序(我没有代码),它接受查询填充具有结果的ACTIVEX表控件.我没有钩子进入添加静态值.

我也知道我可以在表格中记录"-1,'所有事情'",但问题是,如果我这样做,我将需要更改程序中的很多地方以忽略该记录时做处理.

'ALL THINGS'值是一种伪记录,用于处理程序某一部分的特殊情况.

Fru*_*ner 30

你能在查询中做一个联合吗?

SELECT -1 AS ID , 'ALL THINGS' AS NAMEOFTHING FROM DUAL /*'FROM DUAL' is an Oracle thing,
                                                       not sure if you need to do 
                                                       something like that in DB2*/
UNION 
SELECT ID, NAMEOFTHING FROM LISTOFTHINGS ORDER BY NAMEOFTHING
Run Code Online (Sandbox Code Playgroud)

显然,这就是应该如何为DB2做的

SELECT -1 AS ID , 'ALL THINGS' AS NAMEOFTHING FROM SYSIBM.SYSDUMMY1
UNION 
SELECT ID, NAMEOFTHING FROM LISTOFTHINGS ORDER BY NAMEOFTHING
Run Code Online (Sandbox Code Playgroud)

  • 应该使用UNION ALL而不是UNION.UNION检查是否存在需要消除的重复记录,这需要额外的时间.UNION ALL保留所有记录,但在这种情况下不应有任何重复记录. (2认同)

Cha*_*ndu 13

试试这个:

SELECT -1 AS ID, 'ALL THINGs' AS NAMEOFTHING FROM SYSIBM.SYSDUMMY1
UNION
SELECT ID, NAMEOFTHING FROM LISTOFTHINGS 
Run Code Online (Sandbox Code Playgroud)