0

5 が管理者、4 が生涯ドナー、3 がドナー、2 が広告主、1 がユーザーであるランク システムをセットアップしました。
次のすべての行をフラッシュする方法がわかりません:
-ユーザーの場合は1週間前(ランク:1)
-広告主の場合は2週間前(ランク:2)
-ドナーの場合は2か月前(ランク:3 ) )

すべての管理者と生涯の寄付者をテーブルに残します。

どんな助けでも大歓迎です。

4

3 に答える 3

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) 
于 2013-01-25T20:56:43.827 に答える
1

データベースにクエリを実行して行を削除するには、おそらく 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";

お役に立てば幸いです。

于 2013-01-25T21:02:54.897 に答える
0

値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)
于 2013-01-25T21:40:15.730 に答える