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

Mengembalikan Min() dan bidang lain?

Masalahnya adalah ini:fungsi agregat apa pun "tidak peduli" tentang sisa barisnyaJika bukan MIN tapi SUM, lebih mudah untuk dilihat...

Solusinya agak rumit, Anda harus melakukan sesuatu yang melibatkan LEFT JOIN dengan ketidaksetaraan :

SELECT u.username, l.timer AS intScore, l.hashtag

FROM
 leaderboard l
 INNER JOIN users u ON u.users_id = l.users_id
 LEFT JOIN leaderboard l2 ON l.users_id = l2.users_id AND l2.timer < l.timer
WHERE
 l2. users_id IS NULL
ORDER BY intScore ASC

Idenya adalah mendapatkan nilai terendah dengan melewatkan fungsi MIN dan mendapatkan seluruh baris

Memfilter berdasarkan tanggal (atau kolom/kriteria lain dalam hal ini) dari tabel papan peringkat, akan mengharuskan kita untuk memfilter setiap tabel yang kita gunakan. Sangat penting untuk memfilter tabel LEFT JOINed pada kondisi ON, jika tidak, kita menghilangkan efek filtering NULLs:

SET @date0 = '2018-01-01';
SELECT u.username, l.timer AS intScore, l.hashtag

FROM
 leaderboard l
 INNER JOIN users u ON u.users_id = l.users_id
 LEFT JOIN leaderboard l2 ON l.users_id = l2.users_id AND l2.timer < l.timer AND l2.game_date >= @date0
WHERE
 l.game_date >= @date0
 l2.users_id IS NULL
ORDER BY intScore ASC

semoga membantu




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pernyataan MySQL SIAPKAN dalam prosedur tersimpan

  2. Data Grup Mysql Berdasarkan Waktu

  3. String pelarian nyata dan PDO

  4. Mendapatkan hitungan hasil yang dikembalikan oleh Permintaan MySQL dengan JDBC dengan cara yang paling efisien kinerja

  5. Bagaimana Anda menulis kondisional dalam pernyataan pilih MySQL?