2015-05-06 43 views
0

我有如下表:更改MySQL的值已經過去

user_id  post_streak streak_date   streak  first_name club_id 
-------- ----------- ------------   --------- ----------- -------- 
18941684 1    2015-05-05 15:36:18 3   user  1000 

我想改變的連勝0,如果一直就不再那麼12天。

當前查詢:

select 
    first_name, streak, user_id from myTable 
where 
    club_id = 1000 
and 
    post_streak = 1 
and 
    streak_date between date_sub(now(),INTERVAL 12 DAY) and now() 
order by streak desc; 

不顯示結果舊的然後12天。我想顯示所有的結果,但如果它已經超過12天,則將「連勝」更改爲0。

什麼是最好的方式去做這件事?

+0

DATEADD之間嘗試(天,-12,現在()),現在()對不起沒關係這可能會得到你同樣的結果 –

回答

0
UPDATE table 
SET (streak) 
VALUES (0) 
WHERE streak_date < DATEADD(DAY, -12, NOW()); 
SELECT first_name, streak, user_id from myTable 
WHERE 
    club_id = 1000 
AND 
    post_streak = 1 
ORDER BY streak DESC; 

首先查詢將設置有超過12天前streak_date用於記錄所有連勝值設置爲0 第二次查詢將得到所有的記錄有1000 club_id和1

一個post_streak列表
0

把條件放在了select,而不是where

select first_name, 
     (case when streak_date between date_sub(now(), INTERVAL 12 DAY) and now() 
      then streak 
      else 0 
     end) as streak, 
     user_id from myTable 
where club_id = 1000 
order by streak desc; 

我是否需要where子句中的post_streak條件不能確定。

0

http://sqlfiddle.com/#!9/d8bbd/6

select 
    user_id, 
    first_name, 
    streak_date, 
    IF(streak_date between date_sub(now(),INTERVAL 12 DAY) and now(),streak,0) 
from myTable 
where 
    club_id = 1000 
and 
    post_streak = 1 
order by streak desc;