從以前的文章中,我得到了我需要的幫助,但規範已經發生了一些變化,我仍然需要一些幫助。根據日期列從另一列更新sql列
我會盡量讓自己變得儘可能清楚。
我有兩個表,一個叫Users,另一個叫Users_status。
表用戶
column 1 : id (pk)
column 2 : status (fk)
表Users_status
column 1 : user_id (fk)
column 2 : user_status (fk)
column 3 : status_created_at
我要做出驗證了該該表用戶的列2至表Users_status的日期一個cron 。表Users_status可以具有多次USER_ID重複,與user_status遞增,這樣的:
表Users_status
user_id : 1
user_status : 1
status_created_at : 14/09/14
user_id : 1
user_status : 2
status_created_at : 15/09/14
user_id : 1
user_status : 3
status_created_at : 16/09/14
user_id : 2
user_status : 1
status_created_at : 14/09/14
user_id : 2
user_status : 2
status_created_at : 15/09/14
user_id : 2
user_status : 1 // see how user_status came back from 2 to 1
status_created_at : 16/09/14 // most recent status for user_id 2, what I want
欲用1個請求,來更新表的用戶的第二列(狀態)根據表中最新的status_created_at Users_status我也不想更新已經具有良好狀態(與表Users_status相同的狀態)的行
這怎麼辦? 當我只需要按照最高(MAX())user_status值來更新第一個表,我就是這麼做的(感謝@Gervs):
UPDATE users
JOIN (SELECT
user_id,
MAX(status) status
FROM
users_status
GROUP BY user_id
) st
ON users.id = st.user_id
SET users.status = st.status
WHERE users.status < st.status
我會很感激,如果有人能夠給我幫助上,我認爲這是一個開始對我有點太配合物的各種要求:p
感謝,
是status_created_at日期數據類型? – Gervs 2014-09-30 10:39:19
@Gervs datetime – Enjoyted 2014-09-30 10:40:53