2014-10-01 61 views
0

这里是我的SQL表:Sql gruoup by子句没有获取想要的结果?

Item_id  city_product_id       auto_inc price  

1. XYZ   CHDELCLAPTOPDELLINSPIRON     1   1500 
2. ABCD  CHDELCLAPTOPDELLVOSTR816     2   1200 
3. ABCD  CHDELCLAPTOPDELLVOSTR816     3   1000 

这里是我的SQL查询:

SELECT city_product_id, item_id, auto_inc, MIN(price) AS minPrice 
FROM sellers_product GROUP BY city_product_id 

该查询返回的输出:

city_product_id   item_id  auto_inc  price  

    CHDELCLAPTOPDELLINSPIRON XYZ    1  1500 

    CHDELCLAPTOPDELLVOSTR816 ABCD    2  1000 

唯一的问题就是为什么它是返回auto_inc为2时它应该返回3因为1000小于1200.

+0

尝试包括BY子句集团'auto_inc'为好。 – 2014-10-01 10:00:21

+0

@AnkitBajpai不,它没有工作 – AK2 2014-10-01 10:01:23

+0

这是一种方法,根据需要进行更改http://www.sqlfiddle.com/#!2/385f0/3 – 2014-10-01 10:01:52

回答

3

在组中存在非聚集的领域由会给你可以使用自不确定的结果加入,以确定与最小的代价正确的行

SELECT p.* 
FROM sellers_product p 
join (select city_product_id,MIN(price) AS minPrice 
     from sellers_product 
     GROUP BY city_product_id) p1 
on(p.city_product_id = p1.city_product_id and p.price = p1.minPrice) 

Demo

3

MySQL的小组,由函数使用第一代遇到行以填充结果行中任何未分组字段的值。

SELECT city_product_id, item_id, auto_inc, price 
from (SELECT * 
     FROM sellers_product  
     ORDER BY price ASC) AS h 
GROUP BY city_product_id; 

http://sqlfiddle.com/#!2/2d5b2/1

+0

MySQL的最糟糕的功能之一,哟! – DavidG 2014-10-01 10:07:24

+0

震惊知道这........... – 2014-10-01 10:23:47