为了账号安全,请及时绑定邮箱和手机立即绑定

Max函数不显示超过一条记录Mysql

Max函数不显示超过一条记录Mysql

PHP
莫回无 2022-07-29 10:43:54
我有两个表“users”和“paymenthistory”,我想获取具有最高“bookingid”的特定“user”的记录,但它只向我显示一条记录,应该显示2条记录,“max”功能的问题,这是我的桌子表“付款”id  bookingid   userid1   142         3       2   146         23   148         34   154         5表“用户”id      name        1       abc2       zyd3       xyz4       nwd这是我的查询$this->db->select('p.bookingId,MAX(p.bookingId) as lastBookingId,p.userid,u.name');$this->db->from('payment p');$this->db->join('users u','p.userid=u.id');$this->db->where('p.user',"3"); 显示一条记录,但我想获得 2 条具有相同列“lastbookingid”(相同)的记录,我错在哪里?
查看完整描述

4 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

您还需要在最大列中添加GROUPBY子句。


如果是 SQl,请检查以下查询......


select p.bookingId,MAX(p.bookingId) as lastBookingId,p.userid,u.name

from payment p join users u on p.userid=u.id

where p.userid=2 group by p.bookingId;

请检查输出


查看完整回答
反对 回复 2022-07-29
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

你可以试试下面的 SQL 脚本。


$this->db->select('*');

$this->db->from('payment p');

$this->db->join('users u','p.userid=u.id');

$this->db->where('p.user',"3");

$this->db->order_by("p.bookingId", "DESC");

$this->db->limit(2);


查看完整回答
反对 回复 2022-07-29
?
阿晨1998

TA贡献2037条经验 获得超6个赞

我从你在评论中的回复中得到了你的观点。这是更新的 SQL 语句,它将产生您想要的结果


SELECT p.bookingId,

(SELECT MAX(x.bookingId) FROM payment x WHERE x.userid = p.userid) 

AS lastBookingId,

p.userid, u.name

FROM payment p

LEFT JOIN users u ON p.userid = u.id

WHERE p.userid = 3;

使用内部 SQL 语句来避免由于使用聚合函数 (max) 导致结果仅显示一行而隐式添加的“分组依据”。


这是测试的输出:

//img1.sycdn.imooc.com//62e3498c00011bc804970149.jpg

查看完整回答
反对 回复 2022-07-29
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

drop table if exists t;

create table t

(id  int,bookingid int,  userid int);

insert into t values

(1  , 142   ,      3),       

(2  , 146   ,      2),

(3  , 148   ,      3),

(4  , 154   ,      5);


select t.userid,t.bookingid,s.maxbid

from t

join

(select userid, max(bookingid) maxbid ,count(*) cnt

from t

group by userid having cnt > 1

) s

on s.userid = t.userid 

where t.userid = 3 

order by t.bookingid;

子查询找到最大值并测试外部查询然后加入的预订 ID 的数量。


+--------+-----------+--------+

| userid | bookingid | maxbid |

+--------+-----------+--------+

|      3 |       142 |    148 |

|      3 |       148 |    148 |

+--------+-----------+--------+

2 rows in set (0.00 sec)


查看完整回答
反对 回复 2022-07-29
  • 4 回答
  • 0 关注
  • 176 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信