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

时间:2014-11-15 05:42:17

标签: 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     |

e.g。上述:对于PA = SW1,DA = PO19,MIN价格= 90(id = 2)。

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

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

我会发布一些我做过的尝试,但是他们一直没用过。

此致

乔治

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您可以像这样使用子查询 在这里检查输出sqlFiddle

    select p.id,p.pa,p.da, 
(select min(s.price)
 from sample s 
group by s.pa,s.da 
having s.pa=p.pa and s.da=p.da)
 from sample p

介意格式化