2014-12-30 55 views
0

我想选择最大值最小的值。例如,我想选择Playstation,因为它的ID比Silly Puddy大。MySQL声明以最大值获取最小值ID

这是我的SQL语句:

SELECT *, max(id), min(price) 
FROM table 
group by type 
ORDER BY id DESC 


id  name     type  price 
123451 Park's Great Hits  Music  19.99 
123452 Silly Puddy    Toy   3.99 
123453 Playstation    Toy   3.99 

我不断收到傻Puddy返回玩具。有什么不同的建议吗? 在此先感谢!

+1

你一直困惑。由于'id'是唯一的,你总是只能找到一个值,当然,这是“最小值”,这也是“最大值”。 –

+0

如果您愿意,请考虑遵循以下简单的两步操作步骤:1.如果您尚未这样做,请提供适当的DDL(和/或sqlfiddle),以便我们可以更轻松地复制问题。 2.如果您尚未这样做,请提供与步骤1中提供的信息相对应的所需结果集。 – Strawberry

回答

5

只要ID独一无二的 - 只有一个价格,一个ID,没有任何“最低”或“最高”,只有一个:

select * from table where id in (
SELECT max(id) 
FROM table as a 
where a.price = (select min(price) from table as b where a.type=b.type) 
group by type 
) as t 
+2

我了解在具有最低“价格”_的组中具有最大“id”的要求。这是整体上最大的'id'。 –

+0

@MichaelBerkowski在这里你去 –

0

尝试此查询。这应该做到这一点。

select t4.* 

from 

`table` t4 

join 

( 

    select t2.type, max(t2.id) as id 
    from 
    `table` t2 join 
    (
     select type, min(price) as price 
     from 
     `table` t1 
     group by type 
    ) t3 on t2.type = t3.type and t2.price = t3.price 
    group by t2.type 

) t5 on t4.id = t5.id 
相关问题