首页 > 解决方案 > 在 column == 0 的最后一行之后选择 column > 0 的行

问题描述

2021 年编辑:我想更好地解释这一点。

我有一个MyTable用两列命名的表;一列名为SortColumntype Integer,一列名为ExpressionColumntype Boolean。我想在最后一行之后获取所有行,按升序SortColumn排序。 类型不准确。ExpressionColumnTrue

例如。表中的行表示为[SortColumn,ExpressionColumn][0:True]将获得[0:True][0:True, 1:False]将获得[][0:True, 1:False, 2:True, 3:True]将获得[3:True, 4:True]

将旧问题留在下面,以免使给定答案无效。它有太多额外的细节。


我想选择列为 0 的最后一行之后的行Number

所以有了这张表,

Id | Number
------------
0  | 5
1  | 30
2  | 10
3  | 25

我想获得包含Id0 到 3 的行。

有了这张桌子,

Id | Number
------------
0  | 5
1  | 30
2  | 10
3  | 25
4  | 0

我根本不想得到任何行。

有了这张桌子,

Id | Number
------------
0  | 5
1  | 30
2  | 10
3  | 25
4  | 0
5  | 0  
6  | 30

我想排Id6。

SQL 详细信息:MySQL 5.6。

标签: mysqlsql

解决方案


检索单独的记录:

SELECT * 
FROM transaction t1
WHERE Name LIKE '%Car Wash%'
  AND NOT EXISTS ( SELECT NULL
                   FROM transaction
                   WHERE t1.id <= id
                     AND Name LIKE '%Car Wash%' -- maybe not needed? not specified
                     AND Price = 0 );

仅检索其数量:

SELECT COUNT(*)
FROM transaction t1
WHERE Name LIKE '%Car Wash%'
  AND NOT EXISTS ( SELECT NULL
                   FROM transaction
                   WHERE t1.id <= id
                     AND Name LIKE '%Car Wash%'
                     AND Price = 0 );

小提琴


推荐阅读