Mysql更新不等于“”的行中的第一列
我有一个db,它有多个列,后跟名称*语法。基本上,我想在查询中使用UPDATE,以便它更新其值等于的第一列 到目前为止,我发现:Mysql更新不等于“”的行中的第一列,mysql,Mysql,我有一个db,它有多个列,后跟名称*语法。基本上,我想在查询中使用UPDATE,以便它更新其值等于的第一列 到目前为止,我发现: UPDATE table SET `name_1` = CASE WHEN `name_1` = '' then 'something' else name_1 end, `name_2` = CASE WHEN `name_2` = '' then 'something' else name_2 end, `name_3` = CASE WHEN `name_3`
UPDATE table SET
`name_1` = CASE WHEN `name_1` = '' then 'something' else name_1 end,
`name_2` = CASE WHEN `name_2` = '' then 'something' else name_2 end,
`name_3` = CASE WHEN `name_3` = '' then 'something' else name_3 end
WHERE ID = '$id_example'
现在,这将是完美的,除了它做了所有这些。我只想选择第一个相等的列,然后将其余列设置为之前的列。选择所需的第一列,这将是一个很好的做法
UPDATE table SET
`name_1` = CASE WHEN `name_1` = '' then 'something' else name_1 end,
`name_2` = CASE WHEN `name_1` != '' and `name_2` = '' then 'something' else name_2 end,
`name_3` = CASE WHEN `name_1` != '' and `name_2` != '' and `name_3` = '' then 'something' else name_3 end
WHERE ID = '$id_example'
从value=first的表中选择*
然后
您的更新查询这是我的第一个想法,但是如果两个用户同时登录,并且都有SELECT返回,它是空的,并且它执行更新,该怎么办。一个用户会覆盖另一个。我明白了,你是想说如果两个用户每次更新都会像“先到先更新”或者像“用户1”一样更新第一条记录,那么“用户2”会更新第二条记录吗?没错。然后,当整行已满时,它将只插入一个新行,并将所有其他列留空,等待人们填充。在表的末尾添加一列状态将有助于显示status=TRUE/FALSE例如:如果用户登录,请从tble中选择MINid,其中status=FALSE。。。希望它也能起到帮助作用,但我也可以像更新表集'name_1'=当'name_1'时的大小写=然后是'something'其他名称_1end,'name_2'=当'name_1'时的大小写和'name_2'=然后是'something'其他名称结束,'name_3'=当'name_1'时的大小写!=和“姓名”!=“name_3”=然后是“something”或“other name_3 end WHERE ID=“$ID_example”不确定哪种方式最可靠..?这将非常有效,除非我有18+列要检查,所以如果没有更好的方式,这应该可以工作。