-1
我收到以下錯誤:「單行子查詢返回多個行」試圖執行以下查詢:單行子查詢返回不止一行
select *
from wm_inventory
where item_id =(select item_cbo.item.id
from item_cbo
where item_name in ('564310','140270'));
我收到以下錯誤:「單行子查詢返回多個行」試圖執行以下查詢:單行子查詢返回不止一行
select *
from wm_inventory
where item_id =(select item_cbo.item.id
from item_cbo
where item_name in ('564310','140270'));
改成這樣:
select *
from wm_inventory
where item_id in (select item_cbo.item.id
from item_cbo
where item_name in ('564310','140270'));
您不能爲「=」運算符返回多行。
錯誤非常明顯。使用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')
);
使用IN子句,而不是平等檢查'ITEM_ID =' –
難道你會更好聯接兩個表,然後過濾? – Fred
@Fred - 不,OP將不會更好地加入這兩張桌子; Jaydip建議的「IN」解決方案效率更高。一個'IN'條件只需要做很多工作來確定一個id是否在列表中;一個實際的加入會比這個做更多的工作。 – mathguy