使用 MySQL 检索多个经销商的最低值行
在包含 id、名称、值和经销商等列的数据库中,您可以旨在检索每个不同经销商具有最低值的行。在尝试使用 MIN() 和 GROUP BY 时,您尚未找到解决方案。
推荐解决方案:
解决方案 1:
SELECT t1.* FROM your_table t1 JOIN ( SELECT MIN(value) AS min_value, dealer FROM your_table GROUP BY dealer ) AS t2 ON t1.dealer = t2.dealer AND t1.value = t2.min_value
解决方案 2 (更快):
SELECT t1.* FROM your_table t1 LEFT JOIN your_table t2 ON t1.dealer = t2.dealer AND t1.value > t2.value WHERE t2.value IS NULL
解释:
解决方案 1 使用子查询来查找每个经销商的最小值。然后,它将这个子查询与主表连接起来以检索相应的行。
解决方案 2 利用自连接来有效地查找每个经销商具有最低值的行。它使用 LEFT JOIN,检查是否存在具有较低值的行。如果不是,则为该经销商的最低值。
其他信息:
这是一个常见的 MySQL 问题。请参阅此处的文档:“Rows Holding the Group-wise Maximum/Minimum of a certain Column”了解更多详细信息。
以上是如何在MySQL中高效地检索每个经销商的最低值行?的详细内容。更多信息请关注PHP中文网其他相关文章!