9

私のデータベース構造には列が含まれています: id, name, value, dealer. それぞれvalueの最低の行を取得したい。私はとを台無しにしようとしてきましたが、まだ解決策がありません。 dealerMIN()GROUP BY

4

7 に答える 7

25

解決策1:

SELECT t1.* FROM your_table t1
JOIN (
  SELECT MIN(value) AS min_value, dealer
  FROM your_table 
  GROUP BY dealer
) AS t2 ON t1.dealer = t2.dealer AND t1.value = t2.min_value

解決策2:

SELECT t1.* FROM your_table t1
LEFT JOIN your_table t2
ON t1.dealer = t2.dealer AND t1.value > t2.value
WHERE t2.value IS NULL

この問題は非常に有名であるため、Mysqlのマニュアルにこの問題に関する特別なページがあります。

これを確認してください:特定の列のグループごとの最大値/最小値を保持する行

于 2012-09-24T09:02:12.637 に答える
3
SELECT MIN(value),dealer FROM table_name GROUP BY dealer;
于 2012-09-24T09:03:32.083 に答える
3
select id,name,MIN(value) as pkvalue,dealer from TABLENAME 
group by id,name,dealer;

ここでは、すべての行を ID、名前、ディーラーでグループ化し、最小値を pkvalue として取得します。

于 2012-09-24T09:01:53.650 に答える
1

まず、各ディーラーの最低値を解決し、次に特定のディーラーのその値を持つ行を取得する必要があります。私はこれをそのようにします:

SELECT a.*
FROM   your_table AS a
       JOIN (SELECT dealer,
                    Min(value) AS m
             FROM   your_table
             GROUP  BY dealer) AS b
         ON ( a.dealer= b.dealer
              AND a.value = b.m ) 
于 2012-09-24T09:05:37.987 に答える
0
select id, name, value, dealer from yourtable where dealer 
in(select min(dealer) from yourtable group by name, value)
于 2012-09-24T09:10:44.220 に答える
0

次のことを試してください。

SELECT dealer, MIN(value) as "Lowest value"
FROM value
GROUP BY dealer;
于 2012-09-24T09:02:29.360 に答える