0

ステートメントは次のようになります。

DELETE FROM videoswatched vw2 
 WHERE vw2.userID IN ( SELECT vw.userID 
                         FROM videoswatched vw
                         JOIN users u ON vw.userID=u.userID
                        WHERE u.companyID = 1000
                     GROUP BY userID )

それは私にはまともなように見え、SELECTステートメントはそれ自体で機能します(単一の列'userID'を持つ行を生成します。

基本的に、'videoswatched'テーブルのエントリを削除したいと思います。ここで、videoswatchedエントリのuserIDは、usersテーブルに参加した後、companyID=1000であることがわかります。

sql構文でエラーが発生しないようにするにはどうすればよいですか?エラーが近いと表示されます。

vw2 WHERE vw2.userID IN (
    SELECT vw.userID FROM videoswatched vw
    JOIN users u

1行目。

4

2 に答える 2

1

コメントですでに回答されています。テーブルエイリアスを削除する必要があります。MySQLのDELETEステートメント構文では許可されていません(また、その必要もありません)。

編集:ところで、これを試してください(メモリからのコーディング、間違っている可能性があります):

DELETE vw.*
FROM videoswatched vw
INNER JOIN users u ON vw.userID = u.userID
WHERE u.companyID = 1000;
于 2010-05-31T19:30:03.383 に答える
0

MySQLのマニュアルには

ノート

テーブルのエイリアスを宣言する場合は、テーブルを参照するときにエイリアスを使用する必要があります。

DELETE t1 FROM test AS t1、test2WHERE..。

だから、あなたは試すことができます

DELETE vm2 FROM videoswatched vw2 WHERE vw2.userID IN (
SELECT vw.userID FROM videoswatched vw
JOIN users u
ON vw.userID=u.userID
WHERE u.companyID=1000
GROUP BY userID
)

しかし、コメントで述べたように、あなたは単にエイリアスを取り除くことができます

DELETE FROM videoswatched WHERE userID IN (
SELECT vw.userID FROM videoswatched vw
JOIN users u
ON vw.userID=u.userID
WHERE u.companyID=1000
GROUP BY userID
)
于 2010-05-31T19:30:15.770 に答える