我从表中进行了选择(id、组、类型、创建)。如何仅在第一次遇到“ad”类型(包括“ad”行)之前选择行。 在此示例中,我需要 id 为 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:基本上,我需要将选定的行切片,并在其上添加一个行广告。
最佳答案
我猜:
select *
from t
where created_at >= (select max(created_at) from t where type = 'ad')
但是,您没有指定仅在第一次遇到“ad”类型之前的含义 - 表格是否按created_at
排序?或者id
?是否会出现重复的 created_at
值?
关于mysql - SQL 分组列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58499400/