我尝试交换表中的3列。我试试这个:
DELIMITER $$
CREATE PROCEDURE px()
BEGIN
DECLARE temp VARCHAR(20);
update `idsaccess` set
temp = referer,
referer = size_var,
size_var = agent,
agent = temp
WHERE agent like '%210%' ;
END $$
CALL p
它不起作用。它给了我一个错误: Unknown column 'temp' in 'field list'
我不明白:temp是varchar值而不是列。我还尝试删除declare和procedure,只使用@设置变量。这样地:
set @temp = '';
update `idsaccess`
set @temp = referer,
referer = size_var,
size_var = agent
agent = @temp
WHERE agent like '%210%'
它也不起作用。它给了我。 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax
. 你知道我的代码有什么问题吗?为了避免误解,我不想移动列。我只想将一些行(如“%210%”这样的代理)从一列交换到另一列。
2条答案
按热度按时间fzwojiic1#
在备份后试试这个。。。我尝试了我有两列和工作表
fzsnzjdm2#
依赖于使用在所使用的同一查询中设置的变量是有风险的。mysql文档特别指出:
一般来说,除了在set语句中,您不应该将值赋给用户变量,而应该在同一语句中读取值。
最安全的方法(仍应首先备份表)是临时更改表: