Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql更新不等于“”的行中的第一列_Mysql - Fatal编程技术网

Mysql更新不等于“”的行中的第一列

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`

我有一个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` = '' 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+列要检查,所以如果没有更好的方式,这应该可以工作。