Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MYSQL Pilih Satu catatan Acak dari setiap Kategori

Kueri ini mengembalikan semua item yang digabungkan ke kategori dalam urutan acak:

SELECT
c.id AS cid, c.category, i.id AS iid, i.name
FROM categories c
INNER JOIN items i ON c.id = i.category
ORDER BY RAND()

Untuk membatasi setiap kategori menjadi satu, bungkus kueri dalam sebagian GROUP BY :

SELECT * FROM (
    SELECT
    c.id AS cid, c.category, i.id AS iid, i.name
    FROM categories c
    INNER JOIN items i ON c.id = i.category
    ORDER BY RAND()
) AS shuffled_items
GROUP BY cid

Perhatikan bahwa ketika kueri memiliki GROUP BY dan ORDER BY klausa, pengelompokan dilakukan sebelum penyortiran. Inilah mengapa saya menggunakan dua kueri:yang pertama mengurutkan hasil, yang kedua mengelompokkan hasil.

Saya mengerti bahwa kueri ini tidak akan memenangkan perlombaan apa pun. Saya terbuka untuk saran.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Berapa lama hash SHA256?

  2. MySQL:Bagaimana cara menambahkan kolom jika belum ada?

  3. Konektor MySQL C++:Dapatkan insert_id

  4. Gabungkan 2 tabel untuk kueri SELECT?

  5. Cara Menghapus Karakter Utama yang Tidak Diinginkan dari String di MySQL