我使用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
有可能吗?
答案 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 1
和id
但具有不同的price
,那么 names
就属于这种情况。我想,您可以自由删除此声明。