根據來自同一個表的數據更新多個行上的單個列。更新mysql中同一個表的多個行
update table1 set status=newtime
from (
select
case
when TIME_FORMAT(TIMEDIFF(ADDTIME(time_val, '120:00:00'), NOW()), '%Hh %im %ss')<0 then '4'
else '0'
end as newtime,
id as new_id
FROM table1
where id2='2'
and status='0'
)
where id=new_id
這是我的查詢。提前致謝。
編輯:
這是替代查詢來實現這一點。不過這也給了我一個錯誤
update table1 set status=
(select
case when timeleft<0 then '4' else '0' end as something,
new_id
from
(
select
TIME_FORMAT(TIMEDIFF(ADDTIME(time_val, '120:00:00'), NOW()), '%Hh %im %ss') as newtime,
id as new_id
FROM
table1
where id2='2' and
status='0'
)
}
where id=new_id
「#1248 - 每一個派生表必須有它自己的別名」。
,因爲我從查詢中獲取兩列,我不能用別名。任何幫助都會很棒。
而問題出在哪裏?你卡在哪裏? – Lion 2012-03-14 12:32:43
你可以使用別名,比如'SELECT q1.newTime,q1.new_id FROM(SELECT newTime,new_id FROM ...)q1'。在這種情況下,'q1'是派生表的別名。但是,就你而言,它看起來不需要subquerying和/或join。請參閱下面的答案。 – Travesty3 2012-03-14 13:16:44