Ave*_*yan 4 sql mariadb sql-update
如何在 UPDATE、INSERT 之后返回整行或部分行。
这是我的查询。
UPDATE news SET title = 'changed' WHERE ID = 8 RETURNING *
Run Code Online (Sandbox Code Playgroud)
它返回语法错误。
#1064 - 你的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解
'RETURNING *'在第 1 行附近使用的正确语法
我想获取受影响的行数据。
MariaDB 和 MySQL 通常不支持RETURNING语句后的子句UPDATE。
您必须在语句之后直接在单独的语句中返回更新的行,UPDATE如下所示:
UPDATE news SET title = 'changed' WHERE ID = 8;
SELECT * FROM news WHERE ID = 8;
Run Code Online (Sandbox Code Playgroud)
或者使用LAST_INSERT_ID(), 如果您正在执行INSERT, 则基于您的连接(不过,在 MariaDB 中RETURNING允许INSERT- 见下文)。
INSERT INTO news (ID, title) VALUES (8, 'aaa');
SELECT LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)
从上一个问题中了解更多相关信息:return the Updated value after running the update query in mysql
但是,它确实支持or语句RETURNING之后的行(如果您使用的是 10.5 及更高版本),如下所示:INSERTREPLACE
INSERT INTO news (ID, title) values (8, 'aaa') RETURNING *;
Run Code Online (Sandbox Code Playgroud)
REPLACE INTO news VALUES (8,'changed') RETURNING *;
Run Code Online (Sandbox Code Playgroud)
在这里摆弄。
在 MariaDB 文档中了解更多相关信息:REPLACE...RETURNING。