我正在尝试编写Union Query来自两个不同表的多个列(废话),但由于某种原因,第二个Select语句的第二列没有显示在输出中。我不知道这是否正确地描绘了图片,但这是我的代码:
Select empno, job
From EMP
Where job = 'MANAGER'
Union
Select empno, empstate
From EMPADDRESS
Where empstate = 'NY'
Order By empno
Run Code Online (Sandbox Code Playgroud)
输出看起来像:
EMPNO JOB
4600 NY
5300 MANAGER
5300 NY
7566 MANAGER
7698 MANAGER
7782 MANAGER
7782 NY
7934 NY
9873 NY
Run Code Online (Sandbox Code Playgroud)
我认为 5300 和 7782 不会出现两次,而是会出现在输出中的empstate旁边。job对于所有其他empno的,我认为字段中的值是(null)。是我理解不Unions正确,还是他们应该这样工作?
感谢您提前提供的任何帮助。
如果您希望数据位于单独的列中,您将需要 a 而JOIN不是UNION:
Select e.empno, e.job, a.empstate
From EMP e
left join EMPADDRESS a
on e.empno = a.empno
Where job = 'MANAGER'
AND empstate = 'NY'
Order By e.empno
Run Code Online (Sandbox Code Playgroud)
AUNION将两个结果合并为一组,但数据列在同一列中。所以基本上它们被放置在彼此之上:
select col1, col2, 'table1' as src
from table1
union all
select col1, col2, 'table2' as src
from table2
Run Code Online (Sandbox Code Playgroud)
将导致:
col1 | col2 | src
t1 | t1 | table1
t2 | t2 | table2
Run Code Online (Sandbox Code Playgroud)
如果您希望将数据放在单独的列中(听起来像您所做的那样),那么您将使用表的联接。
| 归档时间: |
|
| 查看次数: |
28123 次 |
| 最近记录: |