如何在某些情况下在mysql中获得下一些结果?
+-----+---------------+-------------------------+
| id | update_type | message |
+-----+-----------------------------------------+
| 1 | 10 | One tow three |
| 2 | 20 | No error in this |
| 3 | 0 | My testing message |
| 4 | 0 | php module test |
| 5 | 30 | hello world |
| 6 | 0 | team spirit |
| 7 | 40 | puzzle game |
| 8 | 50 | social game |
| 9 | 0 | stackoverflow |
|10 | 0 | stackexchange |
+-----+---------------+-------------------------+
在上表中,如何从update_type=20
获取所有消息,直到update_type更改为30
。 (上表是静态的,值0
,可以扩展到下一行)
答案 0 :(得分:0)
您可以使用子查询来实现此目的。假设每个值出现一次:
select t.*
from table t
where t.id >= (select t2.id from t t2 where t2.update_type = 20) and
t.id <= (select t2.id from t t2 where t2.update_type = 30);
如果值出现多次,则此查询将生成错误(子查询预计只返回一个值)。在这种情况下您想要做的事情并不清楚,但子查询中的min()
或max()
可以提供帮助。
答案 1 :(得分:0)
如果我确实得到了您的问题,那么您正在寻找SQL解决方案。如果这就是重点,那么你可以在where子句中创建一个条件。即
SELECT * FROM tablename WHERE columnname BETWEEN 20 AND 30;
您必须将tablename
替换为您的表名。和columnname
以及表格中的相应列。然后,您可以在语句中输入WHERE
。在您的情况下,条件为BETWEEN
。