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

Grup MySQL dengan bergabung dengan kiri

Saya pikir ini mungkin yang Anda inginkan di sini:

SELECT DISTINCT
    status_id,
    (SELECT MAX(user_id) FROM comments c2 WHERE c1.status_id = c2.status_id) user_1,
    (SELECT user_id FROM comments c2 WHERE c1.status_id = c2.status_id
     ORDER BY user_id LIMIT 1 OFFSET 1) user_2
FROM comments c1
WHERE user_id IN (2,3);

Demo

(Fiddle pembaruan Anda)

Kita dapat menggunakan subkueri yang berkorelasi untuk menemukan user_id maks. dan user_id kedua hingga maksimal untuk setiap status_id , lalu putar masing-masing sebagai dua kolom terpisah. Menggunakan GROUP_CONCAT pendekatan mungkin lebih disukai di sini, karena itu juga akan memungkinkan Anda untuk dengan mudah mengakomodasi sejumlah pengguna sebagai daftar CSV.

Selain itu, jika Anda menggunakan MySQL 8+ atau lebih tinggi, kami dapat memanfaatkan fungsi analisis peringkat, yang juga akan lebih mudah.



  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 menghemat waktu bukan tanggal dalam database melalui kueri sql

  2. Jenis kolom MySQL TIMESTAMP secara implisit termasuk NOT NULL DEFAULT CURRENT_TIMESTAMP PADA UPDATE CURRENT_TIMESTAMP

  3. MySQL:Hapus semua baris yang lebih lama dari 10 menit

  4. Pivot SQL Dinamis (dengan CONVERT DateField

  5. Fungsi Konversi MySQL