使用SQL获取具有相同ID的最高项

时间:2014-07-24 08:23:27

标签: mysql sql

我希望获得一个SQL语句,它将获得价格最高且link_id = 1的所有数据 http://sqlfiddle.com/#!2/26a13/2

ID .. LINK_ID .. PRICE
10 ..    1    .. 100,000
20 ..    1    .. 150,000
30 ..    2    .. 150,000

以下内容会返回正确的价格/优惠,但不会带来正确的ID和link_id。有没有可能的陈述?或者我是否需要单独提取数据?

SELECT id, p_id, MAX(offer) FROM offers 
WHERE p_id = 1

我也试过

SELECT * FROM offers
WHERE p_id = 1
AND offer = MAX(offer)

5 个答案:

答案 0 :(得分:1)

如果您只想要最高价格记录 试试这个

SELECT id, p_id, offer FROM offers 
WHERE p_id = 1 order by offer desc limit 1

答案 1 :(得分:1)

试试这个,它比子查询快得多。

SELECT o1.*
FROM  offers o1
LEFT JOIN offers o2 on o2.prop_id=o1.prop_id and o1.offer<o2.offer
where o2.id is null and o1.prop_id=2;

示例:http://sqlfiddle.com/#!2/26a13/29

答案 2 :(得分:0)

试试这个Working Fiddle

SELECT * FROM offers JOIN 
(SELECT MAX(offer) as max_offer FROM offers) Max_offer 
ON offers.offer = Max_offer.max_offer
WHERE prop_id = 1;

答案 3 :(得分:0)

尝试以下代码:

SELECT id, p_id, MAX(offer) FROM offers 
GROUP BY id,p_id,offer HAVING p_id = 1 

答案 4 :(得分:0)

根据你的SQL小提琴和你的要求,你可能想要这个吗

SELECT *
FROM offers
WHERE (prop_id,
       offer) in
    (SELECT prop_id,max(offers.offer)
     FROM offers
     WHERE offers.prop_id=2);

检查SQL Fiddle