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 . . . 我很好奇,为什么你不接受这个答案,当它工作。我真的很抱歉!我无意中点击了另一个答案。再一次,这是正确的答案!