1

我使用 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 的 minprice 上方的数据结果为 0 但我不希望最低价格为零,但如果我给出 minprice > 0 的条件,这是不正确的

我希望我的结果变成这样

2  orange         10 
1  green apple    20
3  strawberry      0

可能吗?

4

1 回答 1

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 1如果我们有一个相同idprice不同的项目names。我认为,您可以自由删除此声明。

于 2012-05-30T03:37:57.363 回答