Saya memiliki tabel tag dan ingin mendapatkan jumlah tag tertinggi dari daftar.
Contoh data terlihat seperti ini
id (1) tag ('night')
id (2) tag ('awesome')
id (3) tag ('night')
menggunakan
SELECT COUNT(*), `Tag` from `images-tags`
GROUP BY `Tag`
mengembalikan data yang saya cari dengan sempurna. Namun, saya ingin mengaturnya, sehingga jumlah tag tertinggi adalah yang pertama, dan membatasinya agar hanya mengirim saya 20 tag pertama atau lebih.
Saya mencoba ini ...
SELECT COUNT(id), `Tag` from `images-tags`
GROUP BY `Tag`
ORDER BY COUNT(id) DESC
LIMIT 20
dan saya terus mendapatkan "Penggunaan fungsi grup yang tidak valid - ErrNr 1111"
Apa yang saya lakukan salah?
Saya menggunakan MySQL 4.1.25-Debian
mysql
sql
mysql-error-1111
maxsilver.dll
sumber
sumber
MySQL sebelum versi 5 tidak mengizinkan fungsi agregat dalam klausa ORDER BY.
Anda dapat mengatasi batas ini dengan sintaks yang tidak digunakan lagi:
1, karena ini adalah kolom pertama yang ingin Anda kelompokkan.
sumber
Saya tidak tahu tentang MySQL, tetapi di MS SQL, Anda dapat menggunakan indeks kolom di
order by
klausa. Saya telah melakukan ini sebelumnya ketika melakukan penghitungan dengangroup by
s karena cenderung lebih mudah untuk dikerjakan.Begitu
Menjadi
sumber
Di Oracle, sesuatu seperti ini berfungsi dengan baik untuk memisahkan penghitungan dan urutan Anda sedikit lebih baik. Saya tidak yakin apakah ini akan berfungsi di MySql 4.
sumber
) as counts
, tetapi masih berfungsi tanpaas
bagian.Sintaks ini sama sekali tidak usang, ini E121-03 dari SQL99.
sumber
Coba kueri ini
sumber