2016-05-23 10 views
1

色を3列に格納するmySQLテーブルがあります。赤、緑、青です。各列の値の範囲は0〜255です。私はいくつかのユニークなカラー値が(わずか約200)あることを教えてくれるクエリを作成しましたが、今私がしたいのは、各カラー値の行の数を私のテーブルに表示することです。私が好きな複数の列にまたがってユニークな項目(色)をカウントする

出力は次のようになりますように

- red green blue count 
- 000 000 000 12 
- 255 000 000 56 
- 000 255 000 45 
- 255 255 255 97 

と。私はウェブ上から約10種類のクエリを試しましたが、だれもその仕事をしていないようです。誰も助けることができますか?

ああ、と何かが適度に高速いただければ幸いですので、:)

+0

あなたはしないでくださいSQLで数える方法を知っていますか? 'COUNT'を使用してください。または、行をグループに集約する方法がわかりません。 'GROUP BY'を使います。 –

+1

明確にする:答えの代わりに上記のコメントを書いた。既成のクエリをコピーするのではなく、チュートリアルや本を手に入れて学ぶべきだと思うからだ。これは非常に基本的なクエリーなので、明らかに「ウェブ全体からの10種類のクエリー」を理解することなく試すのは悪い考えです。 –

答えて

3

これは、基本的なgroup byクエリする必要があります:コードの下

select red, green, blue, count(*) 
from t 
group by red, green, blue; 
+0

申し訳ありませんが、誤ったポスターにコメントを追加しました - クエリは同じですが、最初に来ました:) – Arj

2

だけ*句によって選択リストとグループにすべての3色のフィールドを追加し、(カウントを追加し、私のテーブルには百万200以上のエントリがありますのでご注意ください)を選択リストに追加します。

select red, green, blue, count(*) 
from table 
group by red, green, blue 

複合インデックスを赤、緑、青の列に追加してクエリを高速化することができます。

+0

ありがとうございます - あなたは岩です!すべては4時35分に完了しました。私は1トンの仕事を保存しました! – Arj

0

試みは

select count(distinct col1),count(distinct col2) from table_name 
0
SELECT red,green,blue, COUNT(*) AS count 
FROM colorsTable 
GROUP BY red,greenmblue 

は、あなたが見ることができるようにGROUP BY`は仕事を取得します

関連する問題