SQL сгруппированные столбцы - PullRequest
0 голосов
/ 22 октября 2019

У меня есть выбор из таблицы (идентификатор, группа, тип, создан). Как выбрать строки только перед первой встречей типа «реклама» (включая строку «реклама»). В этом примере мне нужны строки с идентификаторами 8207 - 8214.

  id   | group | type | created_at |
+------+-------+------+------------+
| 8214 |    83 | msg  | 1571726466 |
| 8213 |    83 | msg  | 1571724983 |
| 8212 |    83 | msg  | 1571724982 |
| 8211 |    83 | msg  | 1571724978 |
| 8210 |    83 | msg  | 1570861659 |
| 8209 |    83 | msg  | 1570861656 |
| 8208 |    83 | msg  | 1570861650 |
| 8207 |    83 | ad   | 1570861643 |
| 8206 |    83 | msg  | 1570861632 |
| 8205 |    83 | msg  | 1570861623 |
| 8202 |    83 | msg  | 1570861617 |
| 8203 |    83 | msg  | 1570861617 |
| 8204 |    83 | msg  | 1570861617 |
| 8200 |    83 | msg  | 1570861616 |
| 8201 |    83 | msg  | 1570861616 |
| 8197 |    83 | msg  | 1570861615 |
| 8198 |    83 | msg  | 1570861615 |
| 8199 |    83 | msg  | 1570861615 |
| 8194 |    83 | msg  | 1570861614 |
| 8195 |    83 | ad   | 1570861614 |
| 8196 |    83 | msg  | 1570861614 |
| 8192 |    83 | msg  | 1570861613 |

Ожидается:

+------+-------+------+------------+
| id   | group | type | created_at |
+------+-------+------+------------+
| 8214 |    83 | msg  | 1571726466 |
| 8213 |    83 | msg  | 1571724983 |
| 8212 |    83 | msg  | 1571724982 |
| 8211 |    83 | msg  | 1571724978 |
| 8210 |    83 | msg  | 1570861659 |
| 8209 |    83 | msg  | 1570861656 |
| 8208 |    83 | msg  | 1570861650 |
| 8207 |    83 | ad   | 1570861643 |

UPD: В основном мне нужен кусок выбранных строк с однимстрока объявления на нем.

Ответы [ 3 ]

1 голос
/ 22 октября 2019
SELECT * FROM Tbl WHERE Id >= (SELECT MAX(id) FROM Tbl WHERE type = 'ad' GROUP BY ID) 
1 голос
/ 22 октября 2019

Я думаю:

select *
from t
where created_at >= (select max(created_at) from t where type = 'ad')

Однако вы не указываете, что означает только перед первым обращением типа 'ad' - таблица отсортирована по created_at? Или id? Могут ли дублироваться значения created_at?

0 голосов
/ 22 октября 2019

Использование подзапроса

SELECT * FROM table_name where id >= (SELECT MAX(id) FROM table_name where type = 'ad')

ПРИМЕЧАНИЕ. - Вы можете изменить заказ в зависимости от ваших условий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...