Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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,我有这张桌子: 它通过这个查询从mytable中选择不同的代码,即tariff_diff . 现在,如果代码超过1,我想更新tariff_diff=1。例如,我想更新tariff_diff=1,其中行Kuta,DPS50xxx 我试过: 更新mytable设置费率_diff=1 其中inselect distinct code,tariff_diff from mytable 但是我得到了错误的语法。 操作数应包含1列,如果要使用相同的代码更改所有行,可以使用此选项 UPDATE mytabl

我有这张桌子:

它通过这个查询从mytable中选择不同的代码,即tariff_diff .

现在,如果代码超过1,我想更新tariff_diff=1。例如,我想更新tariff_diff=1,其中行Kuta,DPS50xxx

我试过:

更新mytable设置费率_diff=1 其中inselect distinct code,tariff_diff from mytable

但是我得到了错误的语法。
操作数应包含1列

,如果要使用相同的代码更改所有行,可以使用此选项

UPDATE mytable SET mytable.tariff_diff = 1 WHERE mytable.code IN(SELECT count(*), code, tariff_diff from mytable GROUP BY code HAVING count(*)>1)

如果您想用相同的代码修改所有行的代码,您可以使用这个

UPDATE mytable SET mytable.tariff_diff = 1 WHERE mytable.code IN(SELECT count(*), code, tariff_diff from mytable GROUP BY code HAVING count(*)>1)

据我所知,仅当多行前缀为Kuta,DPS50时,您才希望将关税_diff设置为1。存在在Kuta、DPS50.06、Kuta、DPS50.07、Kuta、DPS50.08、Kuta、DPS50.09、Kuta、DPS50.10上匹配

假设所有记录的格式都是:XXX,XXX。。您可以使用子字符串_INDEX解析前缀文本Kuta,DPS50。用作标识符

然后,您可以使用派生联接来匹配具有重复前缀值的代码,并更新匹配行。 如果没有重复值,则不会进行更新

示例:我为Petang添加了一个附加条目DPS50.02,以演示它对其他前缀值的作用

查询:

结果:

这也将避免SQL错误1093

不能更新表并在子查询中从同一表中进行选择


据我所知,仅当多行前缀为Kuta,DPS50时,您才希望将关税_diff设置为1。存在在Kuta、DPS50.06、Kuta、DPS50.07、Kuta、DPS50.08、Kuta、DPS50.09、Kuta、DPS50.10上匹配

假设所有记录的格式都是:XXX,XXX。。您可以使用子字符串_INDEX解析前缀文本Kuta,DPS50。用作标识符

然后,您可以使用派生联接来匹配具有重复前缀值的代码,并更新匹配行。 如果没有重复值,则不会进行更新

示例:我为Petang添加了一个附加条目DPS50.02,以演示它对其他前缀值的作用

查询:

结果:

这也将避免SQL错误1093

不能更新表并在子查询中从同一表中进行选择


无法在子查询的select语句中使用相同的更新表,您可以在此链接中找到原因:

请尝试以下查询:

SET @r_code = (select code from mytable GROUP BY code having count(code) > 1);

update mytable SET tariff_diff = 1 WHERE code in (@r_code);
您可以在此链接中找到有关变量的更多信息


首先,将id存储到some变量中,然后更新查询中使用的id。

在子查询的select语句中不可能使用相同的更新表,您可以在此链接中找到原因:

请尝试以下查询:

SET @r_code = (select code from mytable GROUP BY code having count(code) > 1);

update mytable SET tariff_diff = 1 WHERE code in (@r_code);
您可以在此链接中找到有关变量的更多信息

首先,将id存储到some变量中,然后更新查询中使用的id。

查看:mytable是否有主索引列?查看:mytable是否有主索引列?如果代码列可以包含多个。期间,请告诉我,我将提供一个替代方案。如果您的代码列可以包含多个。期间,让我知道,我会提供一个替代方案。