我希望获得一个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)
答案 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;
答案 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。