【发布时间】:2012-03-15 06:41:39
【问题描述】:
我有一个查询应该退还人们在过去一周购买的东西的一半:
UPDATE main_data SET md.amount_current = md.amount_current + (bought.total / 2)
FROM main_data AS md
INNER JOIN (
SELECT DISTINCT sb.user_id, SUM(sb.spend) AS total
FROM shopitems_bought AS sb
LEFT JOIN shopitems AS si
ON sb.shopitem_id = si.id
WHERE sb.date_bought <= '2012-03-09'
AND sb.date_bought > DATE_ADD('2012-03-09', INTERVAL -7 DAY)
AND si.valid = 1
GROUP BY sb.user_id
) AS bought ON bought.user_id = md.user_id
WHERE md.valid = 1
SELECT 部分可以自行执行并返回正确的数据(应退还的 ID 以及他们在该周花费的金额)。然而,查询作为一个整体抛出一个错误,说我在第 2 行附近的 SQL 语法中有错误(我引用:'FROM main_data AS md INNER JOIN(SELECT DISTINCT sb.forum_id,SUM(sb.s')。
我看不出我做错了什么。
【问题讨论】:
标签: mysql