我正在使用这样的排序数据集:
ID Test
----------
1 Y
2 Y
3 Y
4 N
5 Y
6 N
7 N
8 Y
我想抓取 Test = Y
的所有行并有一个 ID
比 ID
第一次出现(如果存在)小于绑定(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/