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

System prywatnych wiadomości. Wyświetlanie ostatniej wiadomości z każdej rozmowy

To zakłada id to kolumna z automatycznym przyrostem:

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

Zakładając, że masz id_from i id_to zindeksowany, ta odmiana najprawdopodobniej będzie działać lepiej, ponieważ MySQL nie wie, co zrobić z 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

Oto jak uzyskać wiadomości dla tych identyfikatorów:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak sprawdzić, czy kolumna jest pusta lub null w MySQL?

  2. Dołącz do Mysql na podstawie max(timestamp)

  3. Import 1GO SQL File => ERROR 2013 (HY000) w wierszu 23:Utracono połączenie z serwerem MySQL podczas zapytania

  4. Jak użyć LOAD_FILE do załadowania pliku do obiektu BLOB MySQL?

  5. SELECT INTO OUTFILE nie można zapisać do pliku