Mysql 是否使用条件更新不同的列?
我有一个表tbl_a,主键为“ID”,列为“GROUP_ID”、“DATE”、“LENGTH”、“VALID”、“CID” 我想进行更新查询,该查询将更新为:Mysql 是否使用条件更新不同的列?,mysql,Mysql,我有一个表tbl_a,主键为“ID”,列为“GROUP_ID”、“DATE”、“LENGTH”、“VALID”、“CID” 我想进行更新查询,该查询将更新为: 将7的所有组ID更新为CID=9,以及 if(日期+长度updatetablex 设置cid=9 ,valid=当'date`+间隔长度月
将7
的所有组ID更新为CID=9
,以及
if(日期+长度updatetablex
设置cid=9
,valid=当'date`+间隔长度月
语句“将所有组ID 7更新为CID=9”不清楚。当条件日期+长度表示小时、分钟、天、年时,您需要更清楚地了解希望发生什么情况?\ypercube,是否表示“其他有效”也可以是其他1或其他什么?是的,当然可以是您想要的。我假设您不想在这种情况下更改列。
THEN
SET VALID to be FALSE
for that row.
ID| GROUP_ID | DATE | LENGTH| VALID| CID
---------------------------------------------------
1| 7 | 2011-12-01 | 1 | 1 | 2
2| 7 | 2012-01-01 | 1 | 1 | 7
3| 7 | 2012-02-01 | 1 | 1 | 2
4| 7 | 2012-03-01 | 2 | 1 | 3
ID| GROUP_ID | DATE | LENGTH| VALID| CID
---------------------------------------------------
1| 7 | 2011-12-01 | 1 | 0 | 9 // res:2012-12-01,update VALID
2| 7 | 2012-01-01 | 1 | 0 | 9 // res:2012-02-01,update VALID
3| 7 | 2012-02-01 | 1 | 1 | 9 // res:2012-03-01,no update for VALID
4| 7 | 2012-03-01 | 2 | 1 | 9 // res:2012-05-01,no update for VALID
UPDATE TableX
SET cid = 9
, valid = CASE WHEN `date` + INTERVAL length MONTH < CURDATE()
THEN 0
ELSE valid
END
WHERE group_id = 7