
用limit
如select from 表名 limit 0,1;就是获取第一条数据
select from 表名 limit 1,1;就是获取第二条数据
select from 表名 limit 2,1;就是获取第三条数据
以此类推
如果字符串可以用<,>符号比较的话(停电用手机无法验证能不能用)
假设你主键名称是Z,表为T
前一行:
select TOP1 Z from T where Z>'UUID' order by Z DESC
后一行:
select TOP1 Z from T where Z<'UUID' order by Z
合并:
在中间加 UNION ALL
这个不行就去查游标使用吧
mysql系的函数中都是逐行读取的,即第一次mysql_fetch_array得到第一行,第二次得到第二行你可以自己定义一个函数来读取所有行,例如
function mysql_fetch_all($result) {
$rows = array();
while($row=mysql_fetch_array($result))
$rows[] = $row;
return $rows;
}
更好的办法建议你用pdo方式访问mysql,这个也是php目前推荐的方式(php5开始pdo库默认在phpini中已经启用,而mysql系列默认是不启用的)。pdo提供了fetch_all方法取得所有行及fetch方法取得一行。
更多信息请查看php手册中的说明。
假如你是升序排序吧,
select count()
from (select from tab order by keyword_field)
where keyword_field <= keyword;
这个只是个思路了,要考虑效率的话,把子查询拆了吧!
这样的需求的话,那么你需要把第一次查询到的结果保存下来。即通过 select from my where name = 'xbxy'所查到的结果集合存为一个对象,然后要用它的数据时就可以直接读取该对象的属性而无需再次访问数据库了(当然前提是表里的数据没有改变)。但这样只局限于单次的事务 *** 作,如果当前的事务 *** 作完成了,后续 *** 作不再需要它了,或后续进行的是其他类型的事务 *** 作,那么很可能需要再次重新读取数据库。
假设有若干张表tb1、tb2、tb3,查询各张表中的一些字段,若tb1和tb2中是1对1的关系,tb2和tb3是1对多的关系,若要同时查询tb1、tb2和tb3中的一些字段,对于相同的tb1和tb2对应的数据,可能会有多条查询的结果,如果只想查询tb3中对应的某一条数据,这时候sql该如何去编辑呢?
这时候有两种思路,第一种,先不查询tb3中的字段,先去查询tb1和tb2中的字段,再通过遍历结果集去单独查询tb3中的数据,这样的sql会简化,但在相同的查询条件下,用时会增加很多,因为多次查询数据库会有数据库连接的损耗;第二种,是通过一个sql去直接筛选选出分组,下面我分别列举oracle和mysql的用法
如果tb3中一个country(国家)对应的别名(short_name)有多个,
那对应的原始的sql为
oracle中的用法: 改善sql
mysql中的用法: 改善sql
以上就是关于mysql能一行行读取吗全部的内容,包括:mysql能一行行读取吗、mysql如何取得当前行数据的的上一行和下一行数据、PHP mysql_fetch_array函数,怎样取得所有行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)