[英]sql SORT BY on a UNION query
實際上我嘗試對我的 sql 進行排序,但它不是排序
我需要添加 SORT BY TSTATUS
$sql="
(
SELECT
tt.tstatus,
tt.ticketnbr,
tt.col1,
tt.col2,
NULL as col3,
tt.col4,
tt.col5,
tt.col6,
tt.col7,
tt.col8,
'cmg' as tickettype,
CASE WHEN cl.parentid IS NOT NULL THEN 1 ELSE 0 END as has_log
FROM
aradmin.cmg_troubleticket tt
LEFT JOIN ARADMIN.TT_CUSTOMERLOGENTRY cl
ON ( tt.ticketnbr=cl.parentid AND cl.schema='AR:TroubleTicket' AND cl.status=0 )
WHERE
( tt.TSTATUS < 9 )
{$customer_list}
) UNION (
SELECT
tt.tstatus,
tt.ticketnbr,
tt.col1,
tt.col2,
tt.col3,
tt.col4,
tt.col5,
tt.col6,
tt.col7,
tt.col8,
'ar' as tickettype,
CASE WHEN cl.parentid IS NOT NULL THEN 1 ELSE 0 END as has_log
FROM
aradmin.ar_troubleticket tt
LEFT JOIN ARADMIN.TT_CUSTOMERLOGENTRY cl
ON ( tt.ticketnbr=cl.parentid AND cl.schema='AR:TroubleTicket' AND cl.status=0 )
WHERE
( tt.TSTATUS < 10 )
{$customer_list}
)";
只需在查詢末尾附加ORDER BY tt.tstatus
即可獲得排序結果。
創建 UNION 結果的虛擬表並按您需要的屬性排序。 嘗試這個 :
SELECT * FROM (
SELECT
tt.tstatus,
tt.ticketnbr,
tt.col1,
tt.col2,
NULL as col3,
tt.col4,
tt.col5,
tt.col6,
tt.col7,
tt.col8,
'cmg' as tickettype,
CASE WHEN cl.parentid IS NOT NULL THEN 1 ELSE 0 END as has_log
FROM
aradmin.cmg_troubleticket tt
LEFT JOIN
ARADMIN.TT_CUSTOMERLOGENTRY cl
ON ( tt.ticketnbr=cl.parentid AND cl.schema='AR:TroubleTicket' AND cl.status=0 )
WHERE
( tt.TSTATUS < 9 )
{$customer_list}
) UNION (
SELECT
tt.tstatus,
tt.ticketnbr,
tt.col1,
tt.col2,
tt.col3,
tt.col4,
tt.col5,
tt.col6,
tt.col7,
tt.col8,
'ar' as tickettype,
CASE WHEN cl.parentid IS NOT NULL THEN 1 ELSE 0 END as has_log
FROM
aradmin.ar_troubleticket tt
LEFT JOIN
ARADMIN.TT_CUSTOMERLOGENTRY cl
ON ( tt.ticketnbr=cl.parentid AND cl.schema='AR:TroubleTicket' AND cl.status=0 )
WHERE
( tt.TSTATUS < 10 )
{$customer_list}
)) dummy ORDER BY dummy.tstatus
您只需要在查詢的最后添加ORDER BY
子句。 在標准 SQL 中, ORDER BY
應用於整個結果集。
此外,我相信您不需要UNION
ed 子查詢周圍的括號,我刪除了它們。
詢問 :
SELECT
tt.tstatus,
tt.ticketnbr,
tt.col1,
tt.col2,
NULL as col3,
tt.col4,
tt.col5,
tt.col6,
tt.col7,
tt.col8,
'cmg' as tickettype,
CASE WHEN cl.parentid IS NOT NULL THEN 1 ELSE 0 END as has_log
FROM
aradmin.cmg_troubleticket tt
LEFT JOIN ARADMIN.TT_CUSTOMERLOGENTRY cl
ON ( tt.ticketnbr=cl.parentid AND cl.schema='AR:TroubleTicket' AND cl.status=0 )
WHERE
( tt.TSTATUS < 9 )
{$customer_list}
UNION
SELECT
tt.tstatus,
tt.ticketnbr,
tt.col1,
tt.col2,
tt.col3,
tt.col4,
tt.col5,
tt.col6,
tt.col7,
tt.col8,
'ar' as tickettype,
CASE WHEN cl.parentid IS NOT NULL THEN 1 ELSE 0 END as has_log
FROM
aradmin.ar_troubleticket tt
LEFT JOIN ARADMIN.TT_CUSTOMERLOGENTRY cl
ON ( tt.ticketnbr=cl.parentid AND cl.schema='AR:TroubleTicket' AND cl.status=0 )
WHERE
( tt.TSTATUS < 10 )
{$customer_list}
ORDER BY tstatus
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.