[英]Multiple-table UPDATE with WHERE not working
有人能幫我理解為什么下面的 UPDATE 查詢會產生 ERROR 嗎?
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 控股 h JOIN subt ON h.portfolio = subt.portfolio AND h.isin”附近使用正確的語法
雖然低於 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 數據庫
您可以嘗試在子查詢上使用普通的內部聯接,而不是 WITH 結果
UPDATE holdings h
JOIN
(
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
) 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.