Sql 当达到条件时,如何与其他进一步记录一起跳过?
我有SQL问题。假设我们有记录: 在上面的记录中,我们需要选择带有Cancel的记录,但只有2条记录以Cancel开始,而不是全部记录。顶部或任何位置可能有多个取消Sql 当达到条件时,如何与其他进一步记录一起跳过?,sql,postgresql,Sql,Postgresql,我有SQL问题。假设我们有记录: 在上面的记录中,我们需要选择带有Cancel的记录,但只有2条记录以Cancel开始,而不是全部记录。顶部或任何位置可能有多个取消 请帮我创建一个查询。应该可以。我刚刚在第1列上订购了ASC,但如果您不关心选择了哪个索引,您可以删除该行 SELECT * FROM YourTable WHERE col2='Cancel' ORDER BY col1 LIMIT 2 如果需要初始取消集,可以执行以下操作: select t.* from t where t.c
请帮我创建一个查询。应该可以。我刚刚在第1列上订购了ASC,但如果您不关心选择了哪个索引,您可以删除该行
SELECT *
FROM YourTable
WHERE col2='Cancel'
ORDER BY col1
LIMIT 2
如果需要初始取消集,可以执行以下操作:
select t.*
from t
where t.col2 = 'cancel' and
t.col1 < (select min(t2.col1)
from t t2
where t2.col2 <> 'cancel'
);
不存在以下情况:
请参阅。Top1234上可能有两个以上的取消。取消只是一个行号,而不是表中的一列。请检查有问题的图像编辑。我们会根据创建时间对记录进行排序,我们希望在非取消状态之前保留顶级记录。表示图像中只有2条记录,而不是第4条记录。顶部或顶部可能有多个取消记录anywhere@ankit . . . 2开始意味着表中有一个排序列。表表示无序集。这是您应该使用的列。是否有像id这样的主键或表示行顺序的列?如果没有,则启动并不意味着什么,因为表是无序的数据集。您能显式显示您试图获取的结果吗?@forpas是的,有主键,但我们会根据创建时间对记录进行排序,我们希望记录在非取消状态之前都是顶级记录。表示图像中只有2条记录,而不是第4条one@Jeremy请检查是否已编辑question@ankit我仍然看不到您期望的查询结果。是的,在fiddle中,它响应我想要的,但在我的代码中不工作。可能是我正在按id而不是按创建日期对记录进行排序。然后,id
select t.* from tablename t
where col = 'Cancel'
and not exists (
select 1 from tablename
where creation_date < t.creation_date and col <> t.col
)