Mysql
 sql >> база данни >  >> RDS >> Mysql

Система за лични съобщения. Изброяване на последното съобщение от всеки разговор

Това предполага id е колона с автоматично увеличение:

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

Ако приемем, че имате id_from и id_to индексиран, този вариант най-вероятно ще се представи по-добре, защото MySQL не знае какво да прави с ИЛИ:

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

Ето как да получите съобщенията за тези идентификатори:

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. Как да управлявате потребителски роли в база данни?

  2. влизане като потребител или администратор от 2 различни таблици

  3. Как да разрешите InnoDB:Не може да се заключи грешка ./ibdata1 mysql?

  4. Как мога да вмъкна NULL данни в MySQL база данни с Python?

  5. съхранявате TEXT/BLOB в същата таблица или не?