【发布时间】:2014-05-30 02:36:20
【问题描述】:
请看下面的查询:
INSERT INTO product_filter (product_id,filter_id)
SELECT product_id,
(CASE WHEN price < 100 then 1
WHEN price >= 100 AND price < 500 then 2
WHEN price >= 500 AND price < 1000 then 3
WHEN price >= 1000 AND price < 1500 then 4
WHEN price >= 1500 AND price < 2000 then 5
WHEN price >= 2000 AND price < 2500 then 50
WHEN price >= 2500 AND price < 3000 then 6
ELSE 51 END) AS filter_id
FROM product_special
ORDER BY priority DESC, date_end DESC
LIMIT 1
UNION
SELECT product_id,
(CASE WHEN price < 100 then 1
WHEN price >= 100 AND price < 500 then 2
WHEN price >= 500 AND price < 1000 then 3
WHEN price >= 1000 AND price < 1500 then 4
WHEN price >= 1500 AND price < 2000 then 5
WHEN price >= 2000 AND price < 2500 then 50
WHEN price >= 2500 AND price < 3000 then 6
ELSE 51 END) AS filter_id
FROM product WHERE product_id not IN
(SELECT product_id FROM product_special)
这是查询应该做的:
- 从 product_special 表中选择所有特价,并根据价格将它们关联到不同的价格过滤器
- 每个产品都可以有多个特价,因此请选择优先级更高且持续时间更长的产品
- 从产品表中选择所有常规价格(仅那些在 product_special 表中没有特价的价格)并根据价格将它们关联到不同的价格过滤器
我收到的错误:
Error Code: 1221. Incorrect usage of UNION and ORDER BY
样本数据集:
感谢任何帮助。
【问题讨论】:
标签: mysql e-commerce opencart mysql-workbench