5 が管理者、4 が生涯ドナー、3 がドナー、2 が広告主、1 がユーザーであるランク システムをセットアップしました。
次のすべての行をフラッシュする方法がわかりません:
-ユーザーの場合は1週間前(ランク:1)
-広告主の場合は2週間前(ランク:2)
-ドナーの場合は2か月前(ランク:3 ) )
すべての管理者と生涯の寄付者をテーブルに残します。
どんな助けでも大歓迎です。
このようなものはトリックを行います:
DELETE
FROM Test
WHERE (TestDate < NOW() - INTERVAL 1 WEEK AND Rank = 1)
OR (TestDate < NOW() - INTERVAL 2 WEEK AND Rank = 2)
OR (TestDate < NOW() - INTERVAL 2 MONTH AND Rank = 3)
まだテストしていません。このクエリを実行して、 DELETEではなく正しいデータが削除されることをテストする前に、SELECTを入力し、どの行が表示されるかを確認してから、このクエリを実行します。
SELECT * FROM Test
WHERE (TestDate < NOW() - INTERVAL 1 WEEK AND Rank=1)
OR (TestDate < NOW() - INTERVAL 2 WEEK AND Rank = 2)
OR (TestDate < NOW() - INTERVAL 2 MONTH AND Rank = 3)
データベースにクエリを実行して行を削除するには、おそらく 3 つの個別のクエリを使用します。
最初のクエリ - ランク 1 (ユーザー) の場合:
$query = "DELETE FROM table WHERE rank=1 AND time > UNIX_TIMESTAMP()-604800";
2 番目のクエリ - ランク 2 (広告主) の場合:
$query = "DELETE FROM table WHERE rank=2 AND time > UNIX_TIMESTAMP()-1209600";
3 番目のクエリ - ランク 3 (ドナー) の場合:
$query = "DELETE FROM table WHERE rank=3 AND time > UNIX_TIMESTAMP()-2592000";
お役に立てば幸いです。
値datetimeとしてテーブルに列を配置し、次のweryを使用して条件に基づいてレコードを削除する必要があります
CREATE TABLE IF NOT EXISTS `test` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`rank` int(10) NOT NULL,
`timestamp` datetime NOT NULL,
PRIMARY KEY (`id`)
)
DElETE
FROM test
WHERE (week( `timestamp` ) >= 1 AND Rank = 1)
OR (week( `timestamp` ) >= 2 AND Rank = 2)
OR (week( `timestamp` ) >= 4 AND Rank = 3)