python django查询mysql表字段的最大值

python django查询mysql表字段的最大值,第1张

如果你的表是用模型建立的话,类似这样

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 table

where

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号。 举例说明:见问题补充。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9596123.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存