Mysql SQL查询错误,需要帮助吗

Mysql SQL查询错误,需要帮助吗,mysql,Mysql,我有一个问题,应该退还人们在过去一周购买的东西的一半: 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 sho

我有一个问题,应该退还人们在过去一周购买的东西的一半:

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语法中有一个错误,我引用:“从主数据中选择不同的sb.forum\u id,SUMsb.s”

我看不出我做错了什么。

比你上面所用的更糟糕。尝试将查询更改为:

UPDATE main_data 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
) bought ON bought.user_id = md.user_id 
SET amount_current = md.amount_current - (bought.total / 2) 
WHERE md.valid = 1
要减去而不是添加:

SET amount_current = md.amount_current - (bought.total / 2) 
内部联接中没有用户\u Id

UPDATE main_data SET md.amount_current = md.amount_current + (bought.total / 2) 
FROM main_data AS md 
INNER JOIN (
    SELECT sb.user_id, DISTINCT sb.forum_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

哦,等等,这是我的错,我把实际代码“弄糊涂”了一点。sb.forum\u id应该是sb.user\u id谢谢,问题解决了!所有这些不同的SQL版本都很烦人。
UPDATE main_data SET md.amount_current = md.amount_current + (bought.total / 2) 
FROM main_data AS md 
INNER JOIN (
    SELECT sb.user_id, DISTINCT sb.forum_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