这是我的SQl表:
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
唯一的问题是,当它返回3时,它将auto_inc返回为2,因为1000小于1200。
答案 0 :(得分: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 )
答案 1 :(得分: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;