MySQL:同一行中某些条件下的 SELECT 值和最小值

标签 mysql sql select minimum

(MySQL)用“简单”的术语来说,我需要添加一个最低价格列。 即 PA 和 DA 记录的每个唯一组合的最低价格。

原始数据示例

id | PA  |     DA     |  price |
---|-----|------------|--------|
1  | SW1 |    PO19    |   100  | 
1  | W6  |    E16     |   5    |
2  | SW1 |    PO19    |   90   |
2  | W6  |    E16     |   8    |
3  | TW6 |    SO14    |   2000 |
3  | W6  |    E16     |   9    |

示例的输出

id | PA  |     DA     |  price | MIN price|
---|-----|------------|--------|--------- |
1  | SW1 |    PO19    |   100  |    90    |
1  | W6  |    E16     |   5    |    5     |
2  | SW1 |    PO19    |   90   |    90    |
2  | W6  |    E16     |   8    |    5     |
3  | TW6 |    SO14    |   2000 |    2000  |
3  | W6  |    E16     |   9    |    5     |

例如上图:对于 PA=SW1、DA=PO19,最低价格=90 (id=2)。

理想情况下,我也想只选择一个特定的 ID,但它仍然返回“全局”最小值。 例如如果我想选择id=2,它返回:

id | PA  |     DA     |  price | MIN price|
---|-----|------------|--------|--------- |
2  | SW1 |    PO19    |   90   |    90    |
2  | W6  |    E16     |   8    |    5     |

我会发布一些我所做的尝试,但它们都是无用的尝试。

问候,

乔治

最佳答案

可以将具有最低价格的子选择连接到原始表以获得结果。

SELECT p.id, p.pa, p.da, p.price, minp.price min_price
FROM prices p
JOIN (SELECT pa, da, min(price) price from prices group by pa, da) minp
ON minp.pa = p.pa and minp.da = p.da
WHERE p.id = 2

关于MySQL:同一行中某些条件下的 SELECT 值和最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26942960/

相关文章:

mysql - 如何使用sql子查询分组

sql - ON UPDATE CURRENT_TIMESTAMP 和 JPA

sql - 如何先查询table1,同时用results+table2进行第二次查询

mysql - 从多表 SELECT 语句返回无效结果

php - 在庞大的数据库中搜索

mysql - 将 MySQL/var/lib/mysql 移动到共享卷

php - 自动从下拉列表中获取第一项到输入

sql - 列名作为 INSERT 语句中的参数

c# - 在 foreach 循环中调用 Dataset 属性

javascript - HTML 重置表单,包括选择 ='selected' 的选择元素