如何在SQL中使用union进行排序,使first先选择查询值?

如何在SQL中使用union进行排序,使first先选择查询值?,sql,oracle,Sql,Oracle,在此查询中: SELECT NM, DEP_CD FROM EMP WHERE DEP_CD='1100' and (SELECT COUNT(1) FROM BBS_TABLE WHERE UP_DEP_CD = '1100') > 0 UNION SELECT NM, DEP_CD FROM EMP WHERE DEP_CD '1110' 首先 选择查询从EMP中选择NM、DEP_CD,其中DEP_CD='1100' 和 从BBS_表中选择COUNT1,其中UP_DEP_CD='11

在此查询中:

SELECT NM, DEP_CD FROM EMP WHERE DEP_CD='1100' and (SELECT COUNT(1) FROM BBS_TABLE WHERE UP_DEP_CD = '1100') > 0
UNION
SELECT NM, DEP_CD FROM EMP WHERE DEP_CD '1110'
首先 选择查询从EMP中选择NM、DEP_CD,其中DEP_CD='1100' 和 从BBS_表中选择COUNT1,其中UP_DEP_CD='1100'>0 始终返回1个结果。 我想把这个放在结果值的第一位,但是结果没有规则,所以我不能使用order by

如何将第一个查询的结果放在第一行?
我使用oracle db。

这里有一个选项

定义一个伪列为rnk,第一个查询为rnk=1,联合下面的查询为2。 在rnk列的顺序之后

SELECT NM, DEP_CD,1 as rnk FROM EMP WHERE DEP_CD='1100' and (SELECT COUNT(1) FROM BBS_TABLE WHERE UP_DEP_CD = '1100') > 0
UNION
SELECT NM, DEP_CD,2 as rnk FROM EMP WHERE DEP_CD '1110'
ORDER BY 3 ASC
如果您不希望最终输出包含rnk字段,则使用如下外部查询

select x.NM,x.DEP_CD from (
    SELECT NM, DEP_CD,1 as rnk FROM EMP WHERE DEP_CD='1100' and (SELECT COUNT(1) FROM BBS_TABLE WHERE UP_DEP_CD = '1100') > 0
    UNION
    SELECT NM, DEP_CD,2 as rnk FROM EMP WHERE DEP_CD '1110'
)x
ORDER BY x.rnk ASC
你为什么要使用union?为什么不直接使用:

SELECT NM, DEP_CD
FROM EMP
WHERE DEP_CD = '1100' 
ORDER BY (SELECT COUNT(1) FROM BBS_TABLE WHERE UP_DEP_CD = '1100') DESC;
您只需使用DEP_CD上的order by,如下所示:

SELECT NM, DEP_CD FROM EMP WHERE DEP_CD='1100' and (SELECT COUNT(1) FROM BBS_TABLE WHERE UP_DEP_CD = '1100') > 0
UNION
SELECT NM, DEP_CD FROM EMP WHERE DEP_CD = '1110'
ORDER BY DEP_CD; -- this line

就目前而言,这一质疑几乎毫无意义。DEP_CD“1110”所在位置缺少运算符。请提供样本数据和预期结果,以澄清您的要求。请解释您试图实现的目标。样本数据和预期结果将有所帮助。