mysql - 在没有内部选择的情况下获取最低价格 ID

标签 mysql sql

我有一个名为 a 的表,其中包含以下数据:

+-----+-----------+-------+
|  id | parent_id | price |
+-----+-----------+-------+
|   1 |         1 |   100 |
|   2 |         1 |   200 |
|   3 |         1 |    99 |
|   4 |         2 |  1000 |
|   5 |         2 |   999 |
+-----+-----------+-------+

我想获取每个 parent_id 的最小价格的 id。 有什么方法可以不用子查询得到这个结果吗?

+-----+-----------+-------+
|  id | parent_id | price |
+-----+-----------+-------+
|   3 |         1 |    99 |
|   5 |         2 |   999 |
+-----+-----------+-------+

最佳答案

SELECT D1.id, D1.parent_id, D1.price
FROM Data D1
LEFT JOIN Data D2 on D2.price < D1.price AND D1.parent_id = D2.parent_id
WHERE D2.id IS NULL

关于mysql - 在没有内部选择的情况下获取最低价格 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22869372/

相关文章:

mysql - 基于 2 个 ID 列连接 2 个表是否可以?

mysql - mysql是否使用了我的索引,geokit的性能可以提高吗?

php - 如何在 cakephp 中创建带有联接的查询

c# - 如何使用前瞻性将 SQL 转换为 LINQ(前导式查询)

mysql - 如何在不使用插入查询的情况下在 sql 中插入虚拟行?

mysql - 左连接查询问题

php - Codeigniter Netbeans 使用 MysqlObjects 自动完成

Mysql 错误 #2014 - 命令不同步;您现在不能在存储过程中运行此命令

mysql - 获取 SQL 中唯一列的计数

mysql - 在 MySql 上的 SELECT 语句中重新排列列顺序