2

以下は、配置テーブル内のすべてのレコードを削除するために作成したSQLクエリです。ここでplacement.op_number=は返されたレコードのリストです。

OP_NUMBERサブクエリは単独で正常に機能し、列(2行)のみを返します。

私が得るエラーは次のとおりです。

サブクエリから返すことができるレコードは最大で1つです

DELETE
FROM PLACEMENT
WHERE PLACEMENT.OP_NUMBER = (SELECT OP_NUMBER
                             FROM Opening
                             WHERE opening.qual_code = "SEC-45");

私は何が間違っているのですか?

4

3 に答える 3

5

INequals の代わりに使用します。

delete
from PLACEMENT
where PLACEMENT.OP_NUMBER in (
        select OP_NUMBER
        from Opening
        where opening.qual_code = "SEC-45"
        );
于 2012-05-17T19:30:34.143 に答える
1
DELETE
FROM PLACEMENT
WHERE EXISTS (SELECT OP_NUMBER FROM Opening
               WHERE opening.qual_code = "SEC-45" 
              AND OP_NUMBER = PLACEMENT.OP_NUMBER);
于 2012-05-17T19:30:57.320 に答える
1

現在、PLACEMENT.OP_NUMBER をレコードセット (Int とレコードセット) と比較しています。条件を複数の値と比較するには、IN キーワードを使用します。

新しいクエリは次のようになります -

DELETE
FROM PLACEMENT
WHERE PLACEMENT.OP_NUMBER IN (SELECT OP_NUMBER
                             FROM Opening
                             WHERE opening.qual_code = "SEC-45");
于 2012-05-17T19:33:16.043 に答える