基于值更新mysql表列

基于值更新mysql表列,mysql,Mysql,假设我有一个包含7列的表:sun、mon、tue,等等 我有一行包含所有0,我需要使用dayofWeek(now())更新列 我需要更新sun=1如果函数返回1,mon=1如果函数返回2,等等。您可以使用如下查询: UPDATE yourtable SET sun=(dayofWeek(now()) = 1), mon=(dayofWeek(now()) = 2), tue=(dayofWeek(now()) = 3), ... WHERE id=something UPD

假设我有一个包含7列的表:
sun
mon
tue
,等等

我有一行包含所有0,我需要使用
dayofWeek(now())
更新列


我需要更新
sun=1
如果函数返回1,
mon=1
如果函数返回2,等等。

您可以使用如下查询:

UPDATE yourtable
SET
  sun=(dayofWeek(now()) = 1),
  mon=(dayofWeek(now()) = 2),
  tue=(dayofWeek(now()) = 3),
  ...
WHERE
  id=something
UPDATE yourtable
SET
  sun=CASE WHEN dayofWeek(now()) = 1 THEN 1 ELSE sun END,
  mon=CASE WHEN dayofWeek(now()) = 2 THEN 1 ELSE mon END,
  tue=CASE WHEN dayofWeek(now()) = 3 THEN 1 ELSE tue END,
  ...
请看小提琴

如果您不想更改实际值,可以使用以下方法:

UPDATE yourtable
SET
  sun=(dayofWeek(now()) = 1),
  mon=(dayofWeek(now()) = 2),
  tue=(dayofWeek(now()) = 3),
  ...
WHERE
  id=something
UPDATE yourtable
SET
  sun=CASE WHEN dayofWeek(now()) = 1 THEN 1 ELSE sun END,
  mon=CASE WHEN dayofWeek(now()) = 2 THEN 1 ELSE mon END,
  tue=CASE WHEN dayofWeek(now()) = 3 THEN 1 ELSE tue END,
  ...

可以我想是的。现在怎么办?我甚至没有想到,因为我无法解析第三个“我有”子句。谢谢,但我的主要动机是得到类似的东西,选择@day=dayofWeek(Now()),然后我们可以有类似于updatecase(@day==1)的东西,然后是set sun=1 case(@day==2)然后是set mon吗=2@AshishMohan如果我理解正确的话,我的第二个查询应该是您需要的,只需将
…然后是1个其他…
更改为
然后是2个…
然后是3个…
,等等。它将更新当天的列,并保持所有其他列不变