Null

如果一行包含 > 0 的列且另一行為 NULL,則從表中返回 2 行

  • October 28, 2016

即使一行為空但另一行> 0,如何返回2行

item_id  | location    | quantity   
-------------------------------------
   14    |    1        |    10
   14    |    2        |   <null>
   21    |    1        |   <null>
   21    |    2        |   <null>

結果應返回:

item_id  | location    | quantity   
-------------------------------------
   14    |    1        |    10
   14    |    2        |   <null>

我需要一個帶有數量 > 0 的子句的查詢。如果數量在位置 1 和 2 上為空,則不返回,如果數量 > 0 在一個位置返回兩行。我有 10 個位置(1 到 10),我需要查看(1,2)中位置的數量。

select t1.*
from the_table t1
where t1.location_id in (1,2)
 and exists (select * 
             from the_table t2
             where t1.item_id = t2.item_id 
               and t2.quantity > 0
               and t2.location_id in (1,2));

值的條件t2.quantity > 0為假null,所以如果一個的所有數量item_id都為假,則不返回相應的項目null``where

線上範例:http ://rextester.com/NSRQ98002

引用自:https://dba.stackexchange.com/questions/153580