在 MySQL 中获取每个经销商的最低价值
考虑具有以下结构的数据库:
CREATE TABLE your_table ( id INT NOT NULL, name VARCHAR(255) NOT NULL, value INT NOT NULL, dealer VARCHAR(255) NOT NULL );
目标: 检索每个值具有最低值的行唯一经销商。
解决方案:
解决方案 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 使用优化的左连接来消除同一经销商的任何具有较大值的行,从而有效地仅返回具有最低值的行。
MySQL 在其文档中为此提供了专门的部分经常遇到的场景,标题为“行持有特定列的分组最大值/最小值”。请参阅此文档以获取更多详细信息和示例。
以上是如何在MySQL中找到每个经销商价值最低的行?的详细内容。更多信息请关注PHP中文网其他相关文章!