2

Order by左外部結合を使用していて、すべての行に列の値があるわけではない場合、SQL クエリで使用するにはどうすればよいですか? これはSQL Server 2005にあります

Select * from Order O
left outer join Order_Selection OS on OS.Order_ColorID = O.Order_ColorID    
order by OS.Order_SelectionID asc

ここのすべての行に の値があるわけではありませんOrder_selectionID。を使用すると、必要なDESC順序が台無しになり、 を使用すると、ない行が最初に来るASCため、行が最後になります。Order_SelectionID

前もって感謝します!

4

2 に答える 2

3

式を使用しCASEて、依存を避けることができますISNULL(OS.Order_SelectionID, magic_number)

SELECT *
FROM   Order O
       LEFT OUTER JOIN Order_Selection OS
         ON OS.Order_ColorID = O.Order_ColorID
ORDER  BY CASE
            WHEN OS.Order_SelectionID IS NULL THEN 1
            ELSE 0
          END,
          OS.Order_SelectionID 
于 2013-01-25T17:44:45.963 に答える
-3

Order_selectionID を持つ行は本当に必要ですか? それらをフィルタリングするために句を使用しない場合:

and Order_selectionID is not null;

または、データで許可されている場合は、null 値をダミー値に置き換えることができます。Oracle の場合:

select nvl(Order_selectionID, -1) from...
于 2013-01-25T17:33:41.123 に答える