Получите неотвеченное сообщение от MySQL - PullRequest
0 голосов
/ 10 октября 2018

У меня есть таблица в MySQL, которая не правильно структурирована.Он был разработан предыдущим разработчиком.Структура таблицы ниже: -

id (primary_key)
from_user_id (sender)
post_id (thread_id)
to_user_id (receiver)
Message (text_content)
datetime (mysql_timestamp)

Допустим, наш межпользовательский идентификатор (from_user_id) существует в предопределенном массиве, т.е. (4 182 193).

Так что я хочу получить только те строки, в которыхпоследний ответ был сделан пользователем, которого нет в вышеуказанном массиве.

Я сделал запрос, но он возвращает только одну строку.

Не могли бы вы все помочь мне в этом?

Мой запрос: -

SELECT * 
from table 
WHERE id IN (
  SELECT MAX(id) 
  FROM table 
  where from_user_id not in (4,182,193)
)
GROUP BY post_id;

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Выберите последний идентификатор для любых сообщений, а затем используйте полученные идентификаторы в качестве фильтров:

select *
from table t1
where from_user_id not in (4,182,193)
  and id in
(
select max(t2.id)
from table t2
group by t2.post_id
)
0 голосов
/ 10 октября 2018

для получения всех идентификаторов, не входящих в ваш массив, вы должны выбрать все идентификаторы, а не только максимальные и использовать where id not in .. тоже.

для сравнения вам нужно имя столбца

    SELECT * 
    from table 
    WHERE id IN (
      SELECT id
      FROM table 
      where from_user_id where id  not in (4,182,193)
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...