Использование DISTINCT и COUNT вместе в MySQL Query - PullRequest
114 голосов
/ 16 июня 2009

Возможно ли что-то подобное:

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

Я хочу получить количество уникальных идентификаторов продуктов, связанных с ключевым словом. Один и тот же продукт может быть связан дважды с ключевым словом или более, но я бы хотел, чтобы по одному идентификатору продукта учитывался только 1 раз.

Ответы [ 7 ]

256 голосов
/ 16 июня 2009

использование

SELECT COUNT(DISTINCT productId) from  table_name WHERE keyword='$keyword'
52 голосов
/ 16 июня 2009

Я бы сделал что-то вроде этого:

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

, который выдаст вам список типа

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

Это позволяет увидеть, сколько из каждого отдельного идентификатора продукта связано с ключевым словом.

31 голосов
/ 16 июня 2009

Вы были близки: -)

select count(distinct productId) from table_name where keyword='$keyword'
16 голосов
/ 18 сентября 2012

К вашему сведению, это, вероятно, быстрее,

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

чем это,

SELECT COUNT(DISTINCT productId) WHERE keyword='$keyword'
6 голосов
/ 26 июля 2013

Какого черта вся эта работа пыльников

это слишком просто

если вам нужен список того, сколько productId в каждом ключевом слове здесь, это код

SELECT count(productId),  keyword  FROM `Table_name` GROUP BY keyword; 
3 голосов
/ 17 марта 2018

ВЫБОР ОТЛИЧНОГО ПРОДУКТА И СЧЕТЧИКА ОТОБРАЖЕНИЯ ДЛЯ ПРОДУКТА

для другого ответа по этому типу вопроса, это мой другой ответ для подсчета количества продуктов в зависимости от наименования продукта, как в приведенном ниже примере:

Таблица значений

select * FROM Product

image

Подсчитанное название продукта

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

image

Количество записей: 4; Время выполнения: 2 мс

0 голосов
/ 16 июня 2009

Разве не лучше с группой? Что-то вроде:

SELECT COUNT(*) FROM t1 GROUP BY keywork;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...