MySQL从特定ID中选择,直到符合条件

MySQL从特定ID中选择,直到符合条件,mysql,sql,Mysql,Sql,鉴于此表: +----+-----------+--------+ | id | condition | values | +----+-----------+--------+ | 1 | a | 1 | +----+-----------+--------+ | 2 | a | 2 | +----+-----------+--------+ | 3 | a | 3 | +----+-----------+--

鉴于此表:

+----+-----------+--------+
| id | condition | values |
+----+-----------+--------+
| 1  | a         | 1      |
+----+-----------+--------+
| 2  | a         | 2      |
+----+-----------+--------+
| 3  | a         | 3      |
+----+-----------+--------+
| 4  | a         | 4      |
+----+-----------+--------+
| 5  | b         | 5      |
+----+-----------+--------+
| 6  | b         | 6      |
+----+-----------+--------+
如何获得一个从id=3开始的新表,包括并一直到条件=b,不包括:

+----+-----------+--------+
| id | condition | values |
+----+-----------+--------+
| 3  | a         | 3      |
+----+-----------+--------+
| 4  | a         | 4      |
+----+-----------+--------+
增加了小提琴:

基本上,我希望在特定列id上匹配的第一个条件和不同列条件上的第二个条件之间建立一个表,如下所示:

select t.*
from table t
where id >= 3 and id < (select min(t2.id) from table t2 where t2.condition = 'b');
编辑:

此查询在SQL FIDLE上运行良好:

select t.*
from  t
where id >= 3 and id < (select min(t2.id) from t t2 where t2.condition = 'b');

如果我理解您的要求,我相信这将对您有用:

SELECT id, condition, values
FROM tableName
WHERE id > 2
AND condition != b
ORDER BY id

我希望这对您有用。

您需要停止将SQL数据视为具有任何顺序。想想集合中的SQL数据;您必须按值搜索,而不是按位置搜索

SELECT t1.*
FROM t AS t1
JOIN (
    SELECT MIN(id) AS id FROM t
    WHERE id >= 3 AND `condition` = 'b'
) AS t2
WHERE t1.id >= 3 AND t1.id < t2.id
ORDER BY t1.id

问题是条件也可以是c或d,我只需要一个字段的结果-id…到…其他字段-condition@kairos . . . 我很好奇,为什么你不接受这个答案,当它工作。我真的很抱歉!我无意中点击了另一个答案。再一次,这是正确的答案!