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

Systém soukromých zpráv. Výpis poslední zprávy každé konverzace

To předpokládá id je sloupec s automatickým přírůstkem:

SELECT MAX(id) AS id
FROM pms
WHERE id_to = 1 OR id_from = 1
GROUP BY (IF(id_to = 1, id_from, id_to))

Za předpokladu, že máte id_from a id_to indexovaná, bude tato varianta pravděpodobně fungovat lépe, protože MySQL neví, co dělat s OR:

SELECT MAX(id) AS id FROM
(SELECT id, id_from AS id_with
FROM pms
WHERE id_to = 1
UNION ALL
SELECT id, id_to AS id_with
FROM pms
WHERE id_from = 1) t
GROUP BY id_with

Zde je návod, jak získat zprávy pro tato ID:

SELECT * FROM pms WHERE id IN
    (SELECT MAX(id) AS id FROM
    (SELECT id, id_from AS id_with
    FROM pms
    WHERE id_to = 1
    UNION ALL
    SELECT id, id_to AS id_with
    FROM pms
    WHERE id_from = 1) t
    GROUP BY id_with)


  1. Jak nainstalovat SQLcl na Mac

  2. Laravel 5.3 Vytváření modelů Návratové pole nemá výchozí hodnotu

  3. SQL Vyberte pouze řádky s minimální hodnotou ve sloupci s podmínkou Where

  4. Jak získat poslední záznam v každé skupině v MySQL