thinkphp如何获取数据表主键id的最大值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp如何获取数据表主键id的最大值?相关的知识,希望对你有一定的参考价值。

max()方法还在吗?在3.1.3后3.2这些版本如何能获取到吗

$user=M('user');
$user->data($data)->add(); // 根据条件保存修改的数据
$maxid=$user->max('g_id');
//p($maxid);die;
$adddata['g_id']=$maxid+1;
p($adddata);
if ($user->add())
$data['id']=$adddata;
$data['content'] =replace_phiz($data['content']);
$data['time']=date('y-m-d H:i',$data['time']);
$data['status']=1;

$this->ajaxReturn($data,'json');
else
//成功后返回客户端新增的用户ID,并返回提示信息和操作状态
$this->ajaxReturn(array('status'=>0),'json');

参考技术A 脑袋太死板了 ,max
在不在他也是封装的sql查询语句
最大的主键 也就是最后一个数据 这个还用想吗?

你按id倒序排序 不就是出来了吗
闹到灵活点别把知识学死追问

$user=$id=M('user')->order('id DESC')->data($data)->add();
dump($id);
if ($user->add())
$data['id']=$id+1;
//省略若干
else
//省略若干

这样吗,貌似还是不行啊?

追答

怎么不行呢?add如果成功应该返回的就是插入的主键吧 好像是这样

那么返回的不就是最大的主键了吗

thinkPHP 如何查询出数据库中id最大的一条数据

统计查询

在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数、所有用户的最大积分、用户的平均成绩等等,ThinkPHP为这些统计操作提供了一系列的内置方法,包括:

方法            说明

Count    
统计数量,参数是要统计的字段名(可选)    

Max    
获取最大值,参数是要统计的字段名(必须)    

Min    
获取最小值,参数是要统计的字段名(必须)    

Avg    
获取平均值,参数是要统计的字段名(必须)    

Sum    
获取总分,参数是要统计的字段名(必须)    

用法示例:

获取用户的最大积分:

$maxScore = $User->max(\'score\');
参考技术A

thinkPHP 查询数据库中id最大的一条数据操作如下:

    先给数据库中的这个字段(sort)分组 再降序排列, 取第1条。

    通过步骤1 获取了 sort值为最大的数据, 然后在 通过 where sort ='步骤1取的值'。

    查询最大ID,select max(id) from table。

    查询最大ID的记录 select * from table where id = (select max(id) from table)
    或者select * from table t where  not exists (select 1 from table t1 where t1.id > t.id)

参考技术B $max_id = Db::name('finance')->max('id');//查询最大的id;

用这个id查询这条数据就行了;
参考技术C

    先给数据库中的这个字段(sort)分组 再降序排列, 取1条

    通过步骤1 获取了 sort值为最大的数据, 然后在 通过 where sort ='步骤1取的值'

参考技术D 以id 做倒序desc 排列 。取第一条数据追问

有别的方法吗?,如果我是查的一个字段值最小的话,要是那最小值有两条数据怎么办

追答

不知道你说的什么意思。、

追问

如果我查一个表,表有个字段`sort` 排序, 那我查排序最小的那些数据的话,可能有几个并列的最小,比如说最小`sort`=1; 但是有两条数据sort都等于1,那不是有两条数据了,那如果 以id 做倒序desc 排列 。取第一条数据的话,不就少查了一条数据出来

追答

select * from tbname where sort = 1 order by id desc
加个条件取不就可以了吗?

追问

更头疼的问题来了,表里还有一个字段name(有甲,乙,丙三个人,他们每个人有3条数据,sort可能相同可能不同),如果我是要查这3个人,每个人的数据sort最小的那一条,那怎么破

追答

select * from tbname where name="jia" order by sort desc limit 1
select * from tbname where name="yi" order by sort desc limit 1
select * from tbname where name="bing" order by sort desc limit 1
分别查询 。 THinkphp 可以把 where 写在一个数组里。 $where['name']=array("jia","yi","bing");
where($where)->order('sort desc")->limit(1)->select();

本回答被提问者和网友采纳

以上是关于thinkphp如何获取数据表主键id的最大值?的主要内容,如果未能解决你的问题,请参考以下文章

怎样用ThinkPHP在添加数据前获取自增长主键的下一个值

Thinkphp 获取最大值id值

thinkPHP 如何查询出数据库中id最大的一条数据?

怎么在thinkphp添加数据时获取自动增长的id

thinkphp 要获得文章的ID,怎么获得,并根据这个ID对文章进行修改,或删除

thinkphp框架数据更新问题