(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 |
我会发布一些我做过的尝试,但是他们一直没用过。
此致
乔治
答案 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
介意格式化