我有这样的SQL:
WITH
randomised AS
(
SELECT
*,
(SUM(FLOOR(RAND() * 1.5) + 1) OVER (ORDER BY id DESC)) DIV 4 AS offset
FROM
products
)
UPDATE
products
INNER JOIN
randomised
ON randomised.id = products.id
SET
products.created_at = DATE_SUB(CURDATE(), INTERVAL randomised.offset DAY), products.updated_at = DATE_SUB(CURDATE(), INTERVAL randomised.offset DAY)
;
这在MySQL版本8下工作正常,但在MySQL版本15下出现以下错误:
1064 -您的SQL语法有错误;查看与您的MariaDB服务器版本相对应的手册,了解在第10行“UPDATE products INNER JOIN randomized ON randomised.id = products...”附近使用的正确语法
是否需要更改某些内容以具有向后兼容性来修复此问题?
1条答案
按热度按时间cpjpxq1n1#
适用于MariaDB的代码...
offset
已重命名为offset_days
https://dbfiddle.uk/y2KQyCTx
***注意:*不要期望所有在MariaDB上运行的代码都能在MySQL上运行,反之亦然。MariaDB应该被视为一个完全独立的平台,就像您对待Oracle一样;他们碰巧拥有MySQL而不是MariaDB。
这不是向后兼容性问题。