4

だから私は車でいっぱいのテーブルを持っています:

4 つのダッジ バイパーがあるとします。データベースには 4 つのエントリがあり、carID 以外はすべて同一です。

   carID | carname | carmodel | colour   |  reg
--------------------------------------------------
    1    |  viper  |  dodge  |   red     |  123
    2    |  viper  |  dodge  |   red     |  124
    3    |  viper  |  dodge  |   red     |  125
    4    |  viper  |  dodge  |   red     |  126
    5    |   R8    |  audi   |   blue    |  127
    6    |   R8    |  audi   |   blue    |  128

ユーザーが車を検索するときに、ダッジ バイパーを 1 つだけ表示したいと考えています。ただし、その行と他のすべての車からすべての情報を取得したいと考えています。

したがって、私が望む出力は次のとおりです。

   carID | carname | carmodel | colour  |  reg
--------------------------------------------------
     1   |  viper  |   dodge  |  red    |  123
     5   |   R8    |   audi   |  blue   |  127

私が行った場合:

SELECT DISTINCT * FROM cars

すべてのエントリを引き戻します。

SELECT DISTINCT carname FROM cars

それぞれ1本ずつしか引かないのですが、車名しかありません。

そのようなものはありますか:

SELECT * FROM cars ORDER BY DISTINCT carname

それとも似たようなもの?

4

3 に答える 3

3

he を返したい場合carIdは、次のように使用してmin(carid)for each samecarnameなどを返すことができます。

select min(carId) as carId, carname, carmodel, colour
from cars
group by carname, carmodel, colour

デモで SQL Fiddle を参照してください

を集計関数に配置したことがわかります。carIdこれは、MySQL が常にcarId列の期待値を返すようにするためです。GROUP BYSELECT リスト内のアイテムを集約しないか集約しないと、予期しない結果が返される可能性があります。( MySQL 拡張機能をGROUP BY参照)

MySQL ドキュメントから:

MySQL は GROUP BY の使用を拡張して、選択リストが GROUP BY 句で指定されていない非集計列を参照できるようにします。... この機能を使用して、不要な列の並べ替えやグループ化を回避することで、パフォーマンスを向上させることができます。ただし、これは主に、GROUP BY で指定されていない各非集計列のすべての値が各グループで同じである場合に役立ちます。サーバーは各グループから任意の値を自由に選択できるため、それらが同じでない限り、選択された値は不確定です。さらに、各グループからの値の選択は、ORDER BY 句を追加しても影響を受けません。結果セットのソートは値が選択された後に行われ、ORDER BY はサーバーが選択する値には影響しません。

于 2013-02-26T11:36:11.517 に答える
3

わかりません、グループ化のことですか?

SELECT MAX(CarId) as carId, carname, carmodel, colour FROM cars GROUP BY carname, carmodel, colour;
于 2013-02-26T11:35:41.093 に答える
1

これを試して:

SELECT DISTINCT carname, otherCol1, otherCol2... FROM cars

ここで SQLFiddle

質問を編集してcar_idを表示したいので、上記の解決策は良くありません。どうぞ:

SELECT MIN(carId) AS carId, carname, carmodel, colour
FROM cars
GROUP BY carname, carmodel, colour

MIN または MAX SUM 使用するものはすべて投影にすぎません...あなたが言うことができる知覚

于 2013-02-26T11:29:45.027 に答える