使用order by进行mysql查询

时间:2012-05-30 02:09:22

标签: sql-order-by

我使用2个表来组合数据,如下所示

SELECT name, price, MIN(price) AS minprice 
FROM c, cp 
WHERE c.id = cp.id 
GROUP BY id 
ORDER BY minprice = 0, minprice ASC

例如:

id     name         price
 1     apple          0
 1     green apple    20
 2     orange         10
 3     strawberry     0

由于第1组的最低价格之上的数据结果为0但我不希望最低价格为零,但如果我给出具有最低价格的条件,则这是不可能的。 0原因

我想我的结果变得像这样

2  orange         10 
1  green apple    20
3  strawberry      0

有可能吗?

1 个答案:

答案 0 :(得分:0)

以下是答案:

SELECT 
    (
     SELECT name 
     FROM yourtable 
     WHERE price = _inner._MIN AND id = _inner.id LIMIT 1
    ) 
    AS _NAME, 
    _inner._MIN
FROM 
    (
     SELECT id, IFNULL(MIN(NULLIF(price, 0)),0) AS _MIN 
     FROM yourtable 
     GROUP BY id
    ) 
    AS _inner

其中 yourtable 是您的表名。

MIN(NULLIF(price, 0))允许您计算最小值而不计算零。

IFNULL(<...>,0)这意味着,我们需要一个真实的zero而不是NULL

如果我们的商品具有相同的LIMIT 1id但具有不同的price,那么

names就属于这种情况。我想,您可以自由删除此声明。