簡體   English   中英

sql SORT BY 對 UNION 查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM