DELETE FROM _Inventory
where ItemID = (
SELECT *
FROM _Items
WHERE RefItemID IN (46440 , 46441 , 46442)
AND ID64 = @ID64)
하위 쿼리가 EXISTS와 함께 도입되지 않은 경우 선택 목록에서 하나의 식만 지정할 수 있습니다.쿼리가 제대로 작동하지 않습니다.^
DELETE FROM _Inventory
where ItemID = (
SELECT *
FROM _Items
WHERE RefItemID IN (46440 , 46441 , 46442)
AND ID64 = @ID64)
하위 쿼리가 EXISTS와 함께 도입되지 않은 경우 선택 목록에서 하나의 식만 지정할 수 있습니다.쿼리가 제대로 작동하지 않습니다.^
당신은 (대신 지정하는 *) IN
를 사용하여 항목 테이블에서 필드를 지정해야합니다
DELETE FROM _Inventory
WHERE ItemID IN (
SELECT ItemId
FROM _Items
WHERE RefItemID IN (46440 , 46441 , 46442) AND ID64 = @ID64)
thx guys ................ –
@KimoAtomix - np, 우리가 도울 수있어서 기쁘다! – sgeddes
단순히 좀 더 선호하는 JOIN
를 사용하여 IN
DELETE
FROM _Inventory
where ItemID IN (SELECT ItemID
FROM _Items
WHERE RefItemID IN (46440 ,46441 ,46442)
AND ID64 = @ID64
)
를 사용하거나,
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
나는 JOIN도 좋아하지만 모든 RDBMS (예 : Oracle)에서는 작동하지 않습니다. – sgeddes
스타가 있어야합니다. 올바른 열 이름으로 바뀌 었습니다. 또한 하위 쿼리가 한 행만 반환하는지 확인하십시오. 여러 행이 아닙니다. 여러 행이 있다면 동등 비교를 IN 절로 변경해야합니다.
SELECT ItemID FROM _Items ...
으로 변경하십시오. 오류는 매우 명확합니다. ItemID
은 단일 열과 만 비교할 수 있으므로 하위 쿼리는 둘 이상의 열을 반환 할 수 없습니다. EXISTS
에서 이는 1
또는 0
을 반환하는 것과 같습니다.이 열은 여전히 단일 열이므로 허용됩니다.
얘들 아, 내가 몇 가지 질문을하지만, 그들이 맞는지 아닌지 잘 모르겠다. –
@KimoAtomix 왜 그걸 시험 해보지 그러니? –
내가 했어. 그들이 틀린 것을 가지고있는 것 같다. –
사용중인 [RDBMS] (http://en.wikipedia.org/wiki/Relational_database_management_system)는 무엇입니까? 'RDBMS'는 * Relational Database Management System *을 의미합니다. 'RDBMS는 SQL의 기초입니다 .' 그리고 MS SQL Server, IBM DB2, Oracle, MySQL 등등과 같은 모든 최신 데이터베이스 시스템을위한 것입니다. –