
如果你的表是用模型建立的话,类似这样
class Person(modelsModel):
qq=modelsCharField(max_length=100)
要取Person模型中的id最大值的话,可以使用a=Personobjectslatest('id'),这样取到的是对应最大id的一个模型,aid就是你要的值,然后aqq就是最大id的qq号码
用一条sql语句肯定无法实现你要达到的目的,你可以先按照id排序 返回前七条信息的id然后再次查询的时候查询 8条信息,然后去除掉前七条信息id 就行了,不过这个得需要程序辅助完成(我用PHP的) 方法三 是纯sql实现 但获取必须是程序获取
例如:
方法一 使用程序去除重复值
$sql = 'select id from pro order by id desc limit 7';
$query = $db->query($sql);
$arr_id = array();
while($db_rec = $db->fetch_array($query)){
$arr_id[] = $db_rec['id'];
}
unset($sql,$query);
$sql = 'select id from pro order by id desc limit 8;
$query = $db->query($sql);
$arr_id2 = array();
while($db_rec = $db->fetch_array($query)){
$arr_id2[] = $db_rec['id'];
}
unset($sql,$query);
注:此处使用数组函数去除重复值,$db 是我实例化的一个对象,query和 fetch_array 都是对象方法
$id = array_diff($arr_id2,$arr_id);
方法二: 使用sql来完成
$sql = 'select id from pro order by id desc limit 7';
$query = $db->query($sql);
$arr_id =$comma = '';
while($db_rec = $db->fetch_array($query)){
$arr_id = $comma$db_rec['id'];
$comma = ',';
}
unset($sql,$query,$db_rec);
$sql = 'select id from pro where id not in('$arr_id') order by id desc limit 1;
$query = $db->query($sql);
$id = '';
if($db_rec = $db->fetch_array($query)){
$id = $db_rec['id'];
}
unset($sql,$query,$db_rec);
方法三: 使用纯sql实现
$sql ='select id from pro where id not in(select id from pro order by id desc limit 7) order by id desc limit 1 ';
$query = $db->query($sql);
$id = '';
if($db_rec = $db->fetch_array($query)){
$id = $db_rec['id'];
}
unset($sql,$query,$db_rec);
注:如果你的mysql 是4 版本的话 方法三应该是不可以的 ,4不支持 子查询 我记得是
最后的$id 就是你想要的 第八个ID号 即第八大的ID值
我是这样做的测试:
create table music(
id varchar(10),
title varchar(100),
name varchar(10)
);
insert into music values('2','离别','12354');
insert into music values('15','朋友','5454');
insert into music values('161','送别','4668');
<php
$conn=mysql_connect("localhost:3307","数据库用户名","数据库密码");
mysql_select_db("date");
$result=mysql_query("select max(id+0) max_id from music",$conn);
$field=mysql_fetch_row($result);
print_r($field);
>
结果:Array ( [0] => 161 )
因为mysql中varchar不能用max()所以通过id+0来转换id类型从而解决这个问题 ,如果你建表时id是整数型的就可以直接用max()了。详细解释见:>
$sql = "select ds from table order by id desc limit 1";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$fd = $row['ds'];
表以ID列为例,思路为:取出当前表id列最大的一个值,然后再自连接,通过取到的最大值,来匹配有最大值的这一行数据。
SQL为如下格式
select from tablewhere
id=(select max(id) from table);
-- max()为取最大值参数
这个事情比较麻烦。为了简化SQL语句,这里只输出cat_id、最大goods_id和次最大goods_id并且假设表名是tbl
select t1cat_id,t1maxGid,t2maxScndGid from(select cat_id,max(goods_id) as maxGid from tbl group by cat_id)t1
left join
(select tcat_id,max(tgoods_id) as maxScndGid from
(select cat_id,goods_id from tbl a where not exists
(select 1 from (select cat_id,max(goods_id) as maxgid from tbl group by cat_id) b
where bcat_id=acat_id and bmaxgid=agoods_id))t
group by tcat_id)t2
on t1cat_id=t2cat_id
上述语句中的子查询t2负责查出每个cat_id 的次最大goods_id。它使用了not exists,碰到大数据表的情况下,在有可被利用的索引时其运行效率是很高的,反之其运行效率会很低,这种情况下建议改为内连接来提高查询速度。
如果需要同时输出goods_name,则需要再增加一个唯一的goods_id和goods_name对照表实施连接,语句将更加复杂。
以上就是关于python django查询mysql表字段的最大值全部的内容,包括:python django查询mysql表字段的最大值、mysql获取第8大的id.、PHP代码中如何查询MYSQL数据库可以得到数据表中某个字段中最大的那条记录的ID号。 举例说明:见问题补充。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)