在两个表之间执行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
答案 0 :(得分:1)
要从结果中删除空记录,请尝试以下操作:
(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中的结果。
修改强>
我猜这个记录包含空字符串或空格而不是空格。所以试试这个:
(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
的长度。
答案 1 :(得分:0)
如何在两个表之间执行联合操作?
你必须在以下情况下使用union运算符,
1.您在多个表中有类似的信息,并且您想从所有表中检索行 他们马上就到了。
2.您想从同一个表中选择几组行,但条件是 表征每个集合并不容易编写为单个WHERE子句。 UNION允许检索 每个集合在自己的SELECT语句中使用更简单的WHERE子句;检索的行 每个都被组合并作为最终查询结果生成。
注意:它不是你问题的完美答案,但它有助于理解联盟 操作
请参阅此http://www.mysqlfaqs.net/mysql-faqs/Funtions-and-Operators/How-does-union-work-in-MySQL