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の最小価格を超えるデータ結果は0ですが、最小価格をゼロにしたくないのですが、最小価格> 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 1id同じとpriceが異なるのアイテムがある場合は、ケースに入れられますnames。このステートメントは自由に削除できると思います。

于 2012-05-30T03:37:57.363 に答える