0

私は SQL Server の専門家ではなく、このクエリに苦労しています。誰でも助けることができますか?

DELETE
FROM PPTMAILLISTC.dbo.emailTables
WHERE  email IN (SELECT *
FROM PPTMAILLISTC.dbo.emailTables tab1
    INNER JOIN PPTMAILLISTAB.dbo.emailTables tab2
        ON tab1.email = tab2.email)

SQL Server Management Studio が返されます。

メッセージ 116、レベル 16、状態 1、行 1
サブクエリが EXISTS で導入されていない場合、選択リストに指定できる式は 1 つだけです。

dbo.emailTables基本的に、 2 つの別個のデータベース (PPTMAILLISTCおよび) には、同じ ( ) と呼ばれる 2 つの別個のテーブルがありますPPTMAILLISTAB

両方のデータベースの結果が同じ場合 (結合を使用して確認できます)

SELECT *
FROM PPTMAILLISTC.dbo.emailTables tab1
    INNER JOIN PPTMAILLISTAB.dbo.emailTables tab2
        ON tab1.email = tab2.email

この結合の結果を から削除したいPPTMAILLISTC.dbo.emailTables

4

2 に答える 2

1

IN の使用を取り除き、内部の SELECT ステートメントを使用して DELETE に変換し、実際に影響を与えたいテーブルの ALIAS (tab1) を次のように参照するだけです。

DELETE  tab1
FROM    PPTMAILLISTC.dbo.emailTables tab1
        INNER JOIN PPTMAILLISTAB.dbo.emailTables tab2 ON tab1.email = tab2.email
于 2013-09-04T14:59:09.457 に答える