MySQLクエリでDISTINCTとCOUNTを一緒に使用する


125

このようなものは可能ですか?

SELECT DISTINCT COUNT(productId) WHERE keyword='$keyword'

キーワードに関連付けられている固有の製品IDの数を取得する必要があります。同じ商品がキーワードに2回以上関連付けられている可能性がありますが、商品IDごとに1回だけカウントされるようにしたい

回答:


277

使用する

SELECT COUNT(DISTINCT productId) from  table_name WHERE keyword='$keyword'

回答がすぐに素晴らしい回答になり、構文的に正しくないため、回答を更新しました。
Rahul Tripathi 2014

データベースに関しては、最適なパフォーマンスを提供しない回答には反対です。パフォーマンス基準を維持することが重要です。@ alistair-hartの答えを使用します。
JDuarteDJ 2015年

何か他のものを探している間にこれに偶然出会い、何かを学びました。私はいつもこれを使ってきましたSELECT COUNT(DISTINCT(productId)) from table_name WHERE keyword='$keyword'。私はあなたのバージョンが2つのパラメータを渡す方が好きCOUNT( )です。
Rockin4Life33 2018

驚いたことに、少なくともMariaDBのバージョン10.1.41では、 "COUNT"と左括弧の間にスペースを入れられないことがわかりました。
DRosenfeld

61

私はこのようなことをします:

Select count(*), productid
from products
where keyword = '$keyword'
group by productid

次のようなリストが表示されます

count(*)    productid  
----------------------
 5           12345   
 3           93884   
 9           93493    

これにより、キーワードに関連付けられている個別の製品IDの数を確認できます。


31

あなたは近かった:-)

select count(distinct productId) from table_name where keyword='$keyword'

回答がほぼ正解になり、構文的に正しくないため、回答を更新しました。
Rahul Tripathi 2014

19

参考までに、これはおそらくより高速です。

SELECT count(1) FROM (SELECT distinct productId WHERE keyword = '$keyword') temp

これより、

SELECT COUNT(DISTINCT productId) WHERE keyword='$keyword'

高速かどうかは
わかり

素晴らしい答え。私の場合、彼の答えは少なくとも100倍速くなっています。SELECT count(*) FROM (SELECT distinct productId WHERE keyword = '$keyword') temp
@Alistair

6

このすべての仕事の葯の一体何が

単純すぎる

各キーワードのproductIdのリストが必要な場合は、コードです

SELECT count(productId),  keyword  FROM `Table_name` GROUP BY keyword; 

そのコメントをありがとう、彼の正確な質問への純粋な答えではなく、多分彼が探しているもので、とにかく役に立つ。
レオ

4

個別の製品の選択と製品ごとの表示数

このタイプの質問に関する別の回答は、以下のサンプルのように、製品名に基づいて製品ベースの数を区別するための別の回答です。

テーブル値

select * FROM Product

カウントされる製品名

SELECT DISTINCT(Product_Name),
(SELECT COUNT(Product_Name) 
from Product  WHERE Product_Name = Prod.Product_Name)  
as `Product_Count`
from Product as Prod

レコード数:4; 実行時間:2ms


-5

グループでのほうがいいのでは?何かのようなもの:

SELECT COUNT(*) FROM t1 GROUP BY keywork;

1
彼は明確なproductIDの数を求めています。クエリは、各キーワードの行数を返します。
デビッド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.