@EVOSandru6

Как найти дублирующиеся подряд записи по признаку?

Добрый день,

Есть такая структура таблицы orders
  1. id
  2. user_id
  3. product_id


Записи:

id        user_id    product_id
1          1             2
2          2             2
3          2             3
4          2             4
5          1             2
6          1             5
7          1             5
8          1             5


Нужно, чтобы заселектились записи только те, в которых предыдущие записи с такими же user_id имеют эквивалентный product_id.

Т.е. в данном случае вытащатся только с id 7 и 8
  • Вопрос задан
  • 225 просмотров
Пригласить эксперта
Ответы на вопрос 2
modestguy
@modestguy
full-stack web developer
Как то так...к сожалению проверить нет возможности) Но смысл такой.

select * from your_table
INNER JOIN   (
      SELECT user_id, product_id
     FROM your_table
     GROUP BY user_id, product_id
    HAVING COUNT(id) > 1
) as m ON m.user_id = your_table.user_id AND m.product_id = your_table.product_id
Ответ написан
@ponaehal
Примерно(!) так:
SELECT  * FROM 
(
select 
  ID
, LEAD(id) OVER (ORDER BY user_id)  lead_id
from your_table
) tab
WHERE tab.id= tab.lead_id
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы