使用带限制的CASE子查询更新mysql表

时间:2018-04-02 07:00:01

标签: mysql sql-update subquery case

我想在查询下方运行以更新优惠券

UPDATE vouchers SET status = 6 WHERE voucher_id IN 
               (
                  select a.voucher_code from products a 
                  JOIN order b ON a.order_id = b.id 
                  WHERE a.voucher_code != '' LIMIT 10
               ) 

但是在运行查询时,我遇到了mysql错误:

这个版本的MySQL还没有支持' LIMIT& IN / ALL / ANY / SOME子查询'

提前致谢。

1 个答案:

答案 0 :(得分:1)

尝试将子查询移动到更新连接中:

UPDATE vouchers v
INNER JOIN
(
    SELECT a.voucher_code
    FROM products a 
    INNER JOIN order b
        ON a.order_id = b.id 
    WHERE a.voucher_code != ''
    LIMIT 10
) t
    ON v.voucher_id = t.voucher_code
SET v.status = 6;
在这种情况下,应该允许

LIMIT