sql >> Databáze >  >> RDS >> Mysql

MySQL seskupí pomocí levého spojení

Myslím, že tohle by mohlo být to, co zde doslova chcete:

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);

Ukázka

(vaše aktualizace Fiddle)

K nalezení maximálního user_id můžeme použít korelované poddotazy a maximálně user_id pro každý status_id a poté každý z nich vytočte jako dva samostatné sloupce. Pomocí GROUP_CONCAT Zde může být vhodnější přístup, protože by vám také umožnil snadno umístit libovolný počet uživatelů jako seznam CSV.

Pokud byste také používali MySQL 8+ nebo vyšší, mohli bychom využít funkce analýzy hodnocení, což by bylo také jednodušší.



  1. Výukový program MySQL:Klauzule MySQL IN (základní)

  2. Průvodce importem dat tabulky pracovního stolu MySQL je extrémně pomalý

  3. Chyba MySQL – #1062 – Duplicitní záznam „ “ pro klíč 2

  4. CI - zobrazí chybu databáze nebo selhání