【发布时间】:2019-06-04 16:03:08
【问题描述】:
有人能帮我理解为什么下面的 UPDATE 查询会产生错误吗?
WITH subt AS (
SELECT t.portfolio, s.isin, t.quantity, t.date
FROM transactions t
JOIN stocks s
ON t.stock = s.name
ORDER BY t.id DESC
LIMIT 1
)
UPDATE holdings h
JOIN subt
ON h.portfolio = subt.portfolio
AND h.isin = subt.isin
SET h.end_date = DATE_SUB(subt.date, INTERVAL 1 DAY)
WHERE h.end_date is NULL
我得到的错误:
SQL 错误 (1064):您的 SQL 语法有错误;检查 与您的 MariaDB 服务器版本相对应的手册 'UPDATE holdings h JOIN subt ON h.portfolio = 附近使用的语法 subt.portfolio AND h.isin ' 在第 10 行
虽然下面的 SELECT 工作正常:
WITH subt AS (
SELECT t.portfolio, s.isin, t.quantity, t.date
FROM transactions t
JOIN stocks s
ON t.stock = s.name
ORDER BY t.id DESC
LIMIT 1
)
SELECT h.*
FROM holdings h
JOIN subt
ON h.portfolio = subt.portfolio
AND h.isin = subt.isin
WHERE h.end_date is NULL
我正在通过 HeidiSQL 使用 MariaDB 10 数据库
【问题讨论】:
-
doc on WITH 仅显示
SELECT,而不是UPDATE。 MySQL 8.0 也允许WITH与UPDATE和DELETE。
标签: mysql sql-update mariadb