UNION ALL未返回预期结果 [英] UNION ALL not returning expected results

查看:81
本文介绍了UNION ALL未返回预期结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从sysibm.sysdummy1中选择''y''值,其中1 = 1

union

从sysibm.sysdummy1中选择''x''值,其中1 = 2


为什么这不会返回''y''。它似乎没有返回任何东西

除非这个联盟的双方都有结果。

select ''y'' value from sysibm.sysdummy1 where 1=1
union
select ''x'' value from sysibm.sysdummy1 where 1=2

Why is it that this will not return ''y''. It seem to return nothing
unless both sides of this union have a result.

推荐答案

TC写道:
TC wrote:

从sysibm.sysdummy1中选择''y''值,其中1 = 1

union

select来自sysibm.sysdummy1的''x''值,其中1 = 2


为什么这不会返回''y''。除非这个联盟的双方都有结果,否则它似乎没有返回任何东西


select ''y'' value from sysibm.sysdummy1 where 1=1
union
select ''x'' value from sysibm.sysdummy1 where 1=2

Why is it that this will not return ''y''. It seem to return nothing
unless both sides of this union have a result.



它对我有用:

It works for me:


db2 -t

db2 = select来自sysibm.sysdummy1的''y''值,其中1 = 1

union

从sysibm.sysdummy1中选择''x''值,其中1 = 2 db2(续) )= db2

(续)=;


价值

-----
$ b $通过


选择了1条记录。


我的数据库服务器在AIX上运行DB2 V8.2 FP10。

db2 -t
db2 =select ''y'' value from sysibm.sysdummy1 where 1=1
union
select ''x'' value from sysibm.sysdummy1 where 1=2 db2 (cont.) =db2
(cont.) =;

VALUE
-----
y

1 record(s) selected.

My database server is running DB2 V8.2 FP10 on AIX.


汤姆:


这可能不重要,但你在哪个平台?我们在

LUW 8.2.3(AIX)上,我能够运行你的声明:


从sysibm中选择''y'' .sysdummy1其中1 = 1

union

从sysibm.sysdummy1中选择''x'',其中1 = 2;

---- -------------------------------------------------- ------------------------

从sysibm.sysdummy1中选择''y'',其中1 = 1 union select'' x''来自

sysibm.sysdummy1其中1 = 2


1

-

y


选择了1条记录。


请注意,你在Subj中提到了UNION ALL。但是你的例子只使用了

UNION。你收到任何错误/警告信息吗?另外,请注意上面的示例中,如果只返回一个值 - ''y'' - 而在

后面的示例中,则返回两个值。返回:NULL和'Y'。多少

" value" (我使用吓唬引号,因为NULL实际上并不是一个值)你期待




SELECT''Y''来自SYSIBM.SYSDUMMY1 UNION ALL SELECT NULLIF(''A'',''A'')FROM

SYSIBM.SYSDUMMY1;

------------ -------------------------------------------------- ----------------

SELECT''Y''来自SYSIBM.SYSDUMMY1 UNION ALL SELECT NULLIF(''A'',''A'' )来自

SYSIBM.SYSDUMMY1


1

-

-

Y


2条记录被选中。


- 杰夫


TC写道:
Tom:

It probably shouldn''t matter, but what platform are you on? We''re on
LUW 8.2.3 (AIX), and I was able to run your statement:

select ''y'' from sysibm.sysdummy1 where 1=1
union
select ''x'' from sysibm.sysdummy1 where 1=2;
------------------------------------------------------------------------------
select ''y'' from sysibm.sysdummy1 where 1=1 union select ''x'' from
sysibm.sysdummy1 where 1=2

1
-
y

1 record(s) selected.

Note that you mention UNION ALL in the Subj. but your example just uses
UNION. Are you getting any error/warning messages? Also, notice how in
the above example, only one value--''y''--is returned, whereas in the
following example two "values" are returned: a NULL and a ''Y''. How many
"values" (I use the scare quotes because NULL isn''t really a value) are
you expecting?

SELECT ''Y'' FROM SYSIBM.SYSDUMMY1 UNION ALL SELECT NULLIF(''A'',''A'') FROM
SYSIBM.SYSDUMMY1;
------------------------------------------------------------------------------
SELECT ''Y'' FROM SYSIBM.SYSDUMMY1 UNION ALL SELECT NULLIF(''A'',''A'') FROM
SYSIBM.SYSDUMMY1

1
-
-
Y

2 record(s) selected.

--Jeff

TC wrote:

从sysibm.sysdummy1中选择''y''值,其中1 = 1

union

从sysibm.sysdummy1中选择''x''值,其中1 = 2


为什么这不会返回''y''。除非这个联盟的双方都有结果,否则它似乎没有返回任何东西


select ''y'' value from sysibm.sysdummy1 where 1=1
union
select ''x'' value from sysibm.sysdummy1 where 1=2

Why is it that this will not return ''y''. It seem to return nothing
unless both sides of this union have a result.


这篇关于UNION ALL未返回预期结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆