ID New_ID Price Title Img Active
1 1 20.00 PA-1 0X4... 1
2 1 10.00 PA-10 0X4... 1
3 3 20.00 PA-11 0X4... 1
4 4 30.00 PA-5 0X4... 1
5 9 20.00 PA-99A 0X4... 1
6 3 50.00 PA-55 0X4... 1
当select语句运行时,只显示ID(1,4,9,6)的行。应该出现具有较高价格的new_ID的原因。 我怎么能这样做?
答案 0 :(得分:2)
在支持窗口聚合的数据库(oracle,sql server 2005,postgresql 8.4)中,例如:
select id, new_id, price, title, img, active
from (select id, new_id, price, title, img, active,
row_number() over (partition by new_id order by price desc) as position
from the_table
) where position = 1
答案 1 :(得分:0)
select *
from T as t
where exists ( select 1 from T where new_id = t.new_id
group by new_id having max(price) = t.price )
要测试是否存在,请使用exists
!在这里,您希望那些具有基于new_id的最大价格的行。
我想只显示不同的行
通常当有人想要“不同的行”时,他们真的想要“最新”的行或那些“最”的行。它几乎总是可以用类似于上面的形式表达。
答案 2 :(得分:0)
select * from ABC where charge_amt in(
SELECT charge_amt
FROM ABC
GROUP BY charge_amt
HAVING (COUNT(charge_amt) = 1) )
order by charge_amt asc