Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        10天前关闭。
                                                                                            
                
        
我有两个表“ users”和“ paymenthistory”,我想获取具有最高“ bookingid”的特定“ user”的记录,
但是它只显示一条记录给我,应该显示2条记录,“ max”功能有问题,这是我的表

表“付款”

id  bookingid   userid
1   142         3
2   146         2
3   148         3
4   154         5


表“用户”

id      name
1       abc
2       zyd
3       xyz
4       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");


显示一条记录,但我想获得两列相同的记录“ lastbookingid”(相同),我在哪里错?

最佳答案

我从你的评论中得到你的意思。
这是更新后的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)导致隐式添加“分组依据”,从而导致结果仅显示一行。

这是经过测试的输出:

php - Max函数未显示多个记录Mysql-LMLPHP

关于php - Max函数未显示多个记录Mysql ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59876460/

10-14 13:05
查看更多