Utiliser DISTINCT et COUNT ensemble dans une requête MySQL

Est-ce quelque chose comme cela possible:

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

Ce que je veux, c’est obtenir le nombre d’identifiants de produit uniques associés à un mot clé. Le même produit peut être associé deux fois avec un mot-clé, ou plus, mais je voudrais seulement compter une fois par ID de produit

utilisation

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

Je ferais quelque chose comme ça:

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

cela vous donnera une liste comme

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

Cela vous permet de voir combien de chaque ID de produit distinct est associé au mot-clé.

Tu étais proche 🙂

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

FYI, c’est probablement plus rapide,

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

que cela,

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

Que diable tous ces travaux d’anthères

c’est trop simple

si vous voulez une liste de combien productId dans chaque mot-clé ici c’est le code

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

SÉLECTIONNER UN PRODUIT DISTINCT ET UN COMPTE D’AFFICHAGE PAR PRODUIT

pour une autre réponse à propos de ce type de question, voici mon autre réponse pour obtenir le compte de la base de produits sur le nom du produit, comme cet exemple ci-dessous:

Valeur du tableau

 select * FROM Product 

Nom du produit compté

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

Nombre d’enregistrements: 4; Temps d’exécution: 2ms

N’est-ce pas mieux avec un groupe par? Quelque chose comme:

 SELECT COUNT(*) FROM t1 GROUP BY keywork;