我正在尝试此代码。但是我收到语法错误。什么是正确的方法?
UPDATE Classificacao AS C
SET C.ClassificacaoCPV_id = (
SELECT CONCAT(
SELECT ClassificacaoCPV FROM Classificacao,
SELECT substring_index(`ClassificacaoCPV_id`,'|',-1) FROM Classificacao)
)
错误:SQL错误(1064):您的SQL语法中有错误;校验 与您的MySQL服务器版本对应的手册 在'SELECT C.ClassificacaoCPV FROM Classificacao附近使用的语法,
SELECT substring_index(第4行的'Class'
答案 0 :(得分:1)
我可以从中得出的是你想要创建一个ClassificatiocaoCPV_id,它是ClassificacaoCPV和现有ClassificatiocaoCPV_id的一部分的串联。
UPDATE Classificacao
SET ClassificacaoCPV_id =
CONCAT(ClassificacaoCPV, substring_index(ClassificacaoCPV_id,'|',-1))
这在飞行中有点危险。您的假设只能运行一次,然后再次拉出ClassificacaoCPV_id
列可能会运气不佳。为您提供的一些建议:1)运行以下查询并确保在更新您也从中提取数据的列之前,结果符合您的预期。 2)为新ID列添加ClassificacaoCPV_id_new
之类的其他列,而不是更新要从中提取部分数据的列。
select CONCAT(C.ClassificacaoCPV, substring_index(ClassificacaoCPV_id, '|',-1)
from ClassificacaoCPV
记得要测量两次,因为你只能剪一次。
答案 1 :(得分:0)
子查询需要额外的括号:
UPDATE Classificacao AS C
SET C.ClassificacaoCPV_id = (
SELECT CONCAT(
(SELECT ClassificacaoCPV FROM Classificaca o),
(SELECT substring_index(`ClassificacaoCPV_id`,'|',-1) )
FROM Classificacao)
)
这假定每个子查询返回一个值。您可能需要使用group_concat()
进行此查询。