私はitemorder という名前のテーブルを持っています: userID
, itemID
, date
, . テーブルのPKはstatus
notes
MYSQL DB
userID, itemID
2 日経過し、ステータス = 2 のすべての行を削除する SQL クエリを作成する必要があります (この SQL クエリは、私のサーバーで 1 日 1 回実行されます)。
次のSQLクエリを作成しました:
SELECT *
FROM itemorder
WHERE
statusOrder=2
AND statusDate< (SELECT DATE_ADD(CURDATE(), INTERVAL -2 DAY))
クエリは、条件に一致するすべての行を返します。ただし、をに変更しSELECT *
てDELETE
も機能しません。
ここにコードがあります
DELETE
FROM itemorder
WHERE
statusOrder=2
AND statusDate<(SELECT DATE_ADD(CURDATE(), INTERVAL -2 DAY))
それは言います:Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor -> Query Editor and reconnect.
WHERE
エラーから、クエリがPKで各行を識別しないため、削除できないことがわかりました。私に何ができる?主キーのない SQL テーブルから重複レコードを削除するトピックを読みましたが、自分SELECT
をに変更する方法をまだ理解できませんでしたDELETE
。