DELETE FROM _Inventory
where ItemID = (
SELECT *
FROM _Items
WHERE RefItemID IN ( 46440 , 46441 , 46442 )
AND ID64 = @ID64 )
サブクエリが EXISTS で導入されていない場合、選択リストに指定できる式は 1 つだけです。
DELETE FROM _Inventory
where ItemID = (
SELECT *
FROM _Items
WHERE RefItemID IN ( 46440 , 46441 , 46442 )
AND ID64 = @ID64 )
サブクエリが EXISTS で導入されていない場合、選択リストに指定できる式は 1 つだけです。
IN
(* を指定する代わりに) items テーブルのフィールドを使用して指定する必要があります。
DELETE FROM _Inventory
WHERE ItemID IN (
SELECT ItemId
FROM _Items
WHERE RefItemID IN ( 46440 , 46441 , 46442 ) AND ID64 = @ID64 )
単に使用するIN
DELETE
FROM _Inventory
where ItemID IN ( SELECT ItemID
FROM _Items
WHERE RefItemID IN (46440 ,46441 ,46442)
AND ID64 = @ID64
)
または、JOIN
私がより好む方を使用して、
DELETE a
FROM _Inventory a
INNER JOIN _Items b
ON a.ItemID = b.ItemID
WHERE b.RefItemID IN (46440, 46441, 46442) AND
b.ID64 = @ID64
星印は正しい列名に置き換える必要があります。また、サブクエリが 1 つの行だけを返すようにしてください。複数行ではありません。複数行の場合は、代わりに等値比較を IN 句に変更する必要があります。
に変更しSELECT ItemID FROM _Items ...
ます。エラーは明らかです。サブクエリはItemID
単一の列としか比較できないため、複数の列を返すことはできません。これは、 orEXISTS
を返すことと同じです。これはまだ単一の列であるため、許可されています。1
0