2017-02-20 43 views
-1

我收到以下錯誤:「單行子查詢返回多個行」試圖執行以下查詢:單行子查詢返回不止一行

select * 
from wm_inventory 
where item_id =(select item_cbo.item.id 
       from item_cbo 
       where item_name in ('564310','140270')); 
+1

使用IN子句,而不是平等檢查'ITEM_ID =' –

+1

難道你會更好聯接兩個表,然後過濾? – Fred

+0

@Fred - 不,OP將不會更好地加入這兩張桌子; Jaydip建議的「IN」解決方案效率更高。一個'IN'條件只需要做很多工作來確定一個id是否在列表中;一個實際的加入會比這個做更多的工作。 – mathguy

回答

2

改成這樣:

select * 
from wm_inventory 
where item_id in (select item_cbo.item.id 
       from item_cbo 
       where item_name in ('564310','140270')); 

您不能爲「=」運算符返回多行。

1

錯誤非常明顯。使用in

select i.* 
from wm_inventory i 
where i.item_id in (select item_cbo.item.id 
        from item_cbo 
        where item_name in ('564310', '140270') 
        );