首页 > 解决方案 > SQL 按列 asc/desc 查询顺序

问题描述

我有一个电子商务网站。在网站上,我进行查询以根据价格获取类别中的所有产品,这很有效:

SELECT DISTINCT pricing.product_id
FROM pricing INNER JOIN
     product_categories
     ON pricing.product_id=product_categories.product_id
WHERE product_categories.category_id='?'
ORDER BY pricing.base_price ASC

我遇到的问题是针对具有多个 SKU 或变体的产品。因此,在我的定价表中,相同的产品 ID 会出现在尽可能多的行中,并且每个行都有自己的基本价格。

当一种产品的一种变体比通常更昂贵的一种产品更昂贵时,我的问题就会发生。

我想知道的是是否有办法订购它,所以它不是所有 SKU 的最低基价,而是所有具有该产品 ID 的 SKU 的最低基价。

标签: phpmysqlsql

解决方案


使用GROUP BYMIN(base_price)获取每个 SKU 的最低价格,然后按此订购。

SELECT pricing.product_id
FROM pricing INNER JOIN
     product_categories
     ON pricing.product_id=product_categories.product_id
WHERE product_categories.category_id='?'
GROUP BY pricing.product_id
ORDER BY MIN(pricing.base_price) ASC

推荐阅读