联盟订单出问题

时间:2015-06-08 04:09:29

标签: mysql sql union

以下代码可以正常工作,直到我尝试按名称命名。

第一次使用union时,如果在第一列名称不同的情况下如何一起订购这些表,那么就很困惑。

SELECT 
    e.emp_name 'Name',
    e.emp_gen 'Gender',
    ('Employee') 'Role'
FROM employee e
ORDER BY e.emp_name ASC
        UNION ALL
SELECT 
    s.sup_name 'Name',
    s.gen 'Gender',
    ('Supervisor') 'Role'
FROM supervisor s
ORDER BY s.sup_name ASC;

修改

现在已经尝试过了,但似乎没有效果

SELECT 
    e.emp_name 'Name',
    e.emp_gen 'Gender',
    ('Employee') 'Role'
FROM employee e
        UNION ALL
SELECT 
    s.sup_name 'Name',
    s.gen 'Gender',
    ('Supervisor') 'Role'
FROM supervisor s
ORDER BY s.sup_name ASC;

2 个答案:

答案 0 :(得分:0)

想出来。

一切都工作正常,就像我直到'order by'说的那样,我认为因为两个表的名称列不同所以我改变了语句的顺序来引用该列。

我忘了你能做到这一点。

我也不是故意让'all'结合这是我刚刚被卡住的东西。

对不起,如果我把所有人都弄糊涂了

SELECT 
    e.emp_name 'Name',
    e.emp_gen 'Gender',
    ('Employee') 'Role'
FROM employee e
        UNION
SELECT 
    s.sup_name 'Name',
    s.gen 'Gender',
    ('Supervisor') 'Role'
FROM supervisor s
ORDER BY 1 ASC;

答案 1 :(得分:0)

应该可以通过名称来订购,如下所示。

SELECT EMPNAME AS COL1, DOB FROM #TABLE1
UNION
SELECT SUPNAME AS COL1, DOB FROM #TABLE2
ORDER BY COL1

SELECT EMPNAME 'COL1', DOB FROM #TABLE1
UNION
SELECT SUPNAME 'COL1', DOB FROM #TABLE2
ORDER BY COL1