Sql-запрос для получения точек высадки пользователя

У меня есть таблица, представленная на картинке ниже. Порядок индекса - это шаги сообщений, он сообщает мне, где пользователь закончил общаться с ботом.

Итак, теперь я пытаюсь получить весь последний шаг order_index с его сообщением.

например (4, спасибо за информацию), (4, спасибо за информацию), (2, какой у вас номер телефона), (2, какой у вас номер телефона)

Я хочу только узнать, где истинное сообщение бота, если, возможно, пользователь закончил на 3, а сообщение - мой номер телефона - 0123456789, я хотел бы вернуться на один шаг назад, чтобы получить сообщение бота.

image

Есть ли какой-либо столбец, который является уникальным для набора сообщений, например, общий идентификатор для сообщения (0,1,2,3)?

Sandesh Gupta 11.04.2018 12:21

сначала вам нужен способ связать все сообщения в одном чате. Сейчас нет возможности узнать это окончательно. Как упоминал Сандеш, вам нужно другое поле, чтобы идентифицировать конкретную беседу и связывать с ней сообщения.

ADyson 11.04.2018 12:24

@ Sandesh Gupta да, у меня есть идентификатор сообщения, чтобы идентифицировать каждое сообщение

Sindiso Dube 11.04.2018 12:33

Где этот столбец идентичности? @SindisoDube

Md. Mahmud Hasan 11.04.2018 13:20
0
4
54
1

Ответы 1

Если у вас есть message_id в качестве уникального идентификатора, вы можете группировать записи с помощью group by

WITH ABC AS (SELECT MAX(order_index) AS order_index,message_id FROM MESSAGES GROUP BY message_id)
SELECT MESSAGE FROM MESSAGES 
INNER JOIN 
ABC 
ON ABC.message_id = MESSAGES.message_id 
   AND ABC.order_index= MESSAGES.order_index;

Другие вопросы по теме