mysql - 使用嵌套选择更新 MySql 中的重复值

标签 mysql sql-update mariadb nested-select

请帮助我处理我的 MySql 脚本,我遇到了一个错误。 我有一个表(tbl_products),其中包含 p_id 和 prod_skuid 字段,我想将所有重复的 prod_skuid 更新到我的 tbl_products 中。

这是我的 MySql 脚本:

UPDATE tbl_product t1 SET t1.prod_skuid = t.prod_skuid  
(
SELECT p_id, prod_skuid from 
(SELECT p_id,if(@row = prod_skuid, @count, @count := 1),
 CONCAT(prod_skuid, '', @count) as prod_skuid,
 @row := prod_skuid,
 @count := @count + 1
 from tbl_product JOIN (SELECT @count := 0, @row := "") as t
 WHERE prod_skuid IN(SELECT prod_skuid from tbl_product group by prod_skuid having count(prod_skuid) > 1)
) as final                          
) as t  
WHERE t1.p_id = t.p_id

我设法仅使用嵌套选择而不使用更新脚本来显示和更改 prod_skuid,但是当我放置更新脚本时,它说我的代码有错误:

SELECT p_id, prod_skuid from 
(SELECT p_id,if(@row = prod_skuid, @count, @count := 1),
 CONCAT(prod_skuid, '', @count) as prod_skuid,
 @row := prod_skuid,
 @count := @count + 1
 from tbl_product JOIN (SELECT @count := 0, @row := "") as t
 WHERE prod_skuid IN(SELECT prod_skuid from tbl_product group by prod_skuid having count(prod_skuid) > 1)
) as final

错误: Mysql Error Message

最佳答案

无论如何,我现在得到了答案。我已经运行了很多测试,现在是:

UPDATE tbl_product t1, 
( SELECT p_id as unique_id, new_name FROM
( SELECT p_id, IF(@ROW = prod_skuid, @COUNT, @COUNT := 1), 
CONCAT(prod_skuid, ' - ', @COUNT) AS new_name, 
@ROW := prod_skuid, 
@COUNT := @COUNT + 1 
FROM tbl_product JOIN (SELECT @COUNT := 0, @ROW := "") AS t 
WHERE prod_skuid IN(SELECT prod_skuid FROM tbl_product 
GROUP BY prod_skuid HAVING COUNT(prod_skuid) > 1) ) AS temp_test ) 
as testing SET t1.prod_skuid = testing.new_name where t1.p_id = testing.unique_id

关于mysql - 使用嵌套选择更新 MySql 中的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50284637/

相关文章:

mysql - Rails 连接表呈现错误的 sql

sql-server - 根据属性值删除 SQL Server 表的 XML 列中的行

mysql - 在 5 个 mysql 服务器中使用 1 个表并将服务器连接在一起

docker - 使用docker-compose在Dockerfile中运行回显失败

mysql - 将从日期时间列中提取的时间与 MariaDB 和 MySQL 中的静态时间进行比较

mysql - 在 SELECT 中使用 SUM() 更好,还是在 SUB-SELECT 中使用 SUM() 更好?

PHP & MySQL 删除与文章问题相关的所有评论

MySql重复SUM,一对多关系

php - php 代码更新错误

mysql - SQL 更新从另一个表中选择的表