php - 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 的最低基价。
解决方案
使用GROUP BY
和MIN(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
推荐阅读
- c# - C# - 我可以在运行时设置泛型参数的类型来整理以下代码吗?
- html - 当我在锚元素中使用 #elemend_id 作为 href 时,有没有办法将注意力集中在目标元素上?
- javascript - 尝试执行单独的 PHP 查询时 AJAX 返回当前页面
- docker - Docker Hub 私有存储库:无法在私有存储库中推送 Solr Core 文件
- python - 使用 pandas 从 xml url 读取单个节点
- c++ - 为什么对常量临时值的本地引用似乎比定义它的方法寿命更长?
- php - 如何使用 Composer 下载 CardConnect 库
- c++ - `std::make_optional` 的意义何在
- javascript - 如何在 React JS 中使用 react-router 提示用户离开页面的半填表单
- java - Java8流:创建一个新对象并将其添加到列表中,同时迭代另一个列表