Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Grupuj MySQL z lewym złączem

Myślę, że może to być to, czego dosłownie chcesz tutaj:

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

(Twoja aktualizacja Fiddle)

Możemy użyć skorelowanych podzapytań, aby znaleźć maksymalny user_id i drugi do maksimum user_id dla każdego status_id , a następnie wykręć każdy z nich jako dwie oddzielne kolumny. Korzystanie z GROUP_CONCAT podejście może być tutaj preferowane, ponieważ pozwoliłoby to również łatwo pomieścić dowolną liczbę użytkowników jako listę CSV.

Ponadto, jeśli używasz MySQL w wersji 8 lub nowszej, moglibyśmy skorzystać z funkcji analizy rang, co również byłoby łatwiejsze.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pisanie hebrajskiego do mySql za pomocą JAVA

  2. Pobieranie identyfikatora ostatniej wstawki pokazuje zły numer

  3. Jak mogę uruchomić i sprawdzić mój dziennik MySQL?

  4. Pobierz przedostatni rekord dla każdego użytkownika z bazy danych

  5. wskaźniki pierwotne vs wskaźniki wtórne:różnice w wynikach