在两个表之间执行 union 运算符后,其中一个表中的列为空,结果从第二行显示...我不知道为什么会发生这种情况...?谁能澄清我的疑问吗?
我的表是sample1和sample2 两个表都包含 Id、Empname、Location
表中的数据为
101 Null NUll
102 aaaa sec
表2中的数据为
103 bbbb hyd
102 cccc gdv
查询:
(select EmpName,Location
from sample1)
union
(select EmpName,Location
from sample2)
Output
EMPNAME LOCATION
aaaa sec
bbbb hyd
cccc gdv
最佳答案
要从结果中删除空记录,请尝试以下操作:
(select EmpName,Location
from sample1
WHERE EmpName IS NOT NULL
AND Location IS NOT NULL)
union
(select EmpName,Location
from sample2
WHERE EmpName IS NOT NULL
AND Location IS NOT NULL)
结果:
EMPNAME LOCATION
vijay ngdv
suresh hyd
ajay hyd
查看结果 SQL Fiddle .
编辑:
我猜该记录包含空字符串或空格而不是 null。所以试试这个:
(select EmpName,Location
from sample1
WHERE LENGTH(TRIM(EmpName)) >0
AND LENGTH(TRIM(Location)) >0)
union
(select EmpName,Location
from sample2
WHERE LENGTH(TRIM(EmpName)) >0
AND LENGTH(TRIM(Location)) >0)
查看结果 SQL Fiddle .
说明:
LENGTH(TRIM(EmpName))
将返回字段 EmpName
删除空格后的长度。
关于mysql - 如何对两个表进行并集运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23647877/