使用嵌套 select 更新 MySql 中的重复值
Update duplicate value in MySql with nested select
请帮助我的 MySql 脚本,我遇到了一个错误。
我有一个 Table (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 而没有更新脚本,但是当我放置更新脚本时它说我的代码有错误:
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 脚本,我遇到了一个错误。 我有一个 Table (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 而没有更新脚本,但是当我放置更新脚本时它说我的代码有错误:
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