UNION ALL未返回预期结果 [英] UNION ALL not returning expected results
本文介绍了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屋!
查看全文