MySQL - 有没有办法在满足给定条件后丢弃排序选择中的记录?

标签 mysql sql select

我正在使用这样的排序数据集:

ID    Test
----------
1      Y
2      Y
3      Y
4      N
5      Y
6      N
7      N
8      Y

我想抓取 Test = Y 的所有行并有一个 IDID 第一次出现(如果存在)小于绑定(bind)到 Test = N 第一个实例的行.

所以我想要一个刚刚返回的查询:

ID    Test
----------
1      Y
2      Y
3      Y

我知道我可以对子选择进行分层,并且我可能必须这样做,但我只是好奇是否有更聪明的方法可以在 Mysql 5.7+ 中实现此目的。

最佳答案

尝试这个查询

SELECT * 
FROM YourTable
WHERE 
    CASE 
       WHEN EXISTS (SELECT id FROM YourTable WHERE Test = 'N')
         THEN (id < (SELECT MIN(id) FROM YourTable WHERE Test = 'N') AND Test = 'Y')
         ELSE Test = 'Y'
       END;

关于MySQL - 有没有办法在满足给定条件后丢弃排序选择中的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48083411/

相关文章:

sql - 将记录分组到不连续的一小时存储箱中

基于 SELECT 的 SQL 条件 UPDATE

PHP/SQL 创建日期与修改日期

php - MYSQL全文索引存在但显示错误1191

php - 如何从 php 函数中获取值(MySQL 查询)

sql - Oracle数据库中的自动增量主键

mysql - 如何从 MySQL 中的数字创建一组行

php - 如何sql更新两个条件

php - Mysql 数据库 - 使用下拉框和搜索字段对数据输出进行排序

MySql - 限制查询的 SELECT 子句中允许的计算