编辑
在删除了我的愚蠢错误INTO
(我正在使用INSERTS并继续前进)后,显示以下错误.还是行不通:
受影响的行:0
[错误] 1093 - 您无法在FROM子句中为更新指定目标表'tbl'
我正在尝试创建一个更新,我在其中选择列中的所有先前数据,添加一个互补字符串并将其另存为新数据.代码如下(带错误)
仅使用select,结果:
set @id = 3; SELECT tbl_alias.string_id FROM tbl as tbl_alias WHERE id = @id -- the output `3,10,8,9,4,1,7,11,5,2,6,12`
我也试过这个查询(输出是我想要的)
SELECT CONCAT(( SELECT tbl_alias.string_id FROM tbl as tbl_alias WHERE id = @id ),',13,14,15,16') AS X -- the output `3,10,8,9,4,1,7,11,5,2,6,12,13,14,15,16`
但在更换下面的选择之后.它带来了同样的错误.
查询
set @id = 3; UPDATE INTO tbl SET string_id = CONCAT(( SELECT tbl_alias.string_id FROM tbl as tbl_alias WHERE id = @id ),',13,14,15,16') WHERE id = @id;
错误
[错误] 1064 - 您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在'INTO tbl SET string_id = CONCAT附近使用正确的语法((第1行的SELECT tbl_alias.string_id')
它可能与... CONCAT
一起SELECT
.但我没有找到解决方案......
你需要子查询吗?
UPDATE tbl SET string_id = CONCAT(string_id, ',13,14,15,16') WHERE id = @id;
请注意,在MySQL中,您无法使用UPDATE修改子查询中使用的表(尽管周围有小提琴): -
https://dev.mysql.com/doc/refman/5.5/en/subqueries.html
在MySQL中,您无法修改表并从子查询中的同一个表中进行选择.这适用于DELETE,INSERT,REPLACE,UPDATE等语句(因为子查询可以在SET子句中使用)LOAD DATA INFILE.