Menggunakan DISTINCT dan COUNT bersamaan dalam Kueri MySQL


125

Apakah sesuatu seperti ini mungkin:

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

Yang saya inginkan adalah mendapatkan jumlah ID produk unik yang terkait dengan kata kunci. Produk yang sama dapat dikaitkan dua kali dengan kata kunci, atau lebih, tetapi saya hanya ingin dihitung 1 kali per ID produk

Jawaban:


277

menggunakan

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

Memperbarui jawaban karena hampir menjadi jawaban yang bagus dan secara sintaksis salah.
Rahul Tripathi

Saya menentang jawaban yang tidak menawarkan kinerja optimal dalam hal database. Sangat penting untuk menjaga standar kinerja. Saya akan memilih jawaban @ alistair-hart.
JDuarteDJ

Tersandung ini saat mencari sesuatu yang lain dan mempelajari sesuatu. Saya selalu melakukan ini dengan SELECT COUNT(DISTINCT(productId)) from table_name WHERE keyword='$keyword'. Saya suka versi Anda lebih baik melewati dua parameter COUNT( ).
Rockin4Life33

Yang mengejutkan saya, saya menemukan bahwa tidak boleh ada spasi antara "JUMLAH" dan kurung buka - setidaknya di versi 10.1.41 dari MariaDB.
DRosenfeld

61

Saya akan melakukan sesuatu seperti ini:

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

yang akan memberi Anda daftar suka

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

Ini memungkinkan Anda untuk melihat berapa banyak dari setiap ID produk berbeda yang dikaitkan dengan kata kunci.


31

Anda sudah dekat :-)

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

Memperbarui jawaban karena hampir menjadi jawaban yang bagus dan secara sintaksis salah.
Rahul Tripathi

19

FYI, ini mungkin lebih cepat,

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

dari ini,

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

Tidak yakin apakah itu lebih cepat, tetapi cara menghitung beberapa kolom dengan kata kunci yang berbeda
VladL

Jawaban yang fantastis. Jawabannya setidaknya 100 kali lebih cepat dalam kasus saya. Sedikit perubahan untuk memahami kode @ Alistair adalahSELECT count(*) FROM (SELECT distinct productId WHERE keyword = '$keyword') temp
KarthikS

6

Apa sih dari semua kepala sari pekerjaan ini

itu terlalu sederhana

jika Anda ingin daftar berapa banyak productId di setiap kata kunci di sini itu kodenya

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

Terima kasih atas komentar itu, bukan jawaban yang murni untuk pertanyaan tepatnya, tapi mungkin apa yang dia cari, dan bagaimanapun juga berguna.
Leo

4

MEMILIH PRODUK BERBEDA DAN COUNT TAMPILAN PER PRODUK

untuk jawaban lain tentang jenis pertanyaan ini adalah jawaban saya yang lain untuk menghitung basis produk berdasarkan nama produk yang berbeda seperti contoh di bawah ini:

Nilai Tabel

select * FROM Product

Nama Produk Terhitung

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

Hitungan Rekaman: 4; Waktu Eksekusi: 2ms


-5

Bukankah lebih baik dengan grup? Sesuatu seperti:

SELECT COUNT(*) FROM t1 GROUP BY keywork;

1
Dia menginginkan jumlah productID yang berbeda. Kueri Anda mengembalikan jumlah baris untuk setiap kata kunci.
David
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.