有人能帮我理解为什么下面的更新查询会产生错误吗?
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服务器版本对应的手册,了解第10行“update holdings h join subt on h.portfolio=subt.portfolio and h.isin”附近使用的正确语法
在下面,选择“工作正常”:
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数据库
1条答案
按热度按时间egmofgnx1#
您可以尝试对子查询使用普通的内部联接,而不是with结果