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

Bagaimana saya bisa mendapatkan distribusi yang merata menggunakan WHERE id IN(1,2,3,4)

Dengan mengatur variabel nomor baris sedikit pun, dan kemudian memfilter hasil itu untuk menunjukkan hanya baris 1-3 yang akan berfungsi

SET @last_objectId = 0;
SET @count_objectId = 0;
SELECT id, name, image FROM (
SELECT
 user.id,
 user.name,
 user.image,
 @count_objectId := IF(@last_objectId = rating.objectId, @count_objectId, 0) + 1 AS rating_row_number,
 @last_objectId := rating.objectId
FROM users
LEFT JOIN ratings ON (ratings.userid = user.id)
WHERE
 rating.rating > 0 AND
 rating.objectId IN (1,2,3,4)
ORDER BY rating.objectId
) AS subquery WHERE rating_row_number <= 3;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengisi database hanya sekali sebelum metode @Test dalam tes musim semi?

  2. SQL pilih urutan kueri berdasarkan hari dan bulan

  3. sebelum memasukkan pemicu untuk menyisipkan baris duplikat ke tabel lain

  4. Mengapa Django ORM jauh lebih lambat daripada SQL mentah

  5. Apakah MySQL InnoDB selalu memerlukan indeks untuk setiap batasan kunci asing?