Php 加入mysql查询。第二张表上的限制1仅限desc顺序

Php 加入mysql查询。第二张表上的限制1仅限desc顺序,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,这里,学生表是主表,其主键是计费表中的外键。 账单表中有多条记录具有学生注册号 我想要最新的帐单记录,限额为1 学生表没有限制。试试这个查询,我认为应该可以 SELECT * FROM student as std LEFT JOIN (SELECT * FROM billing WHERE `paid` < '4' ) AS bill ON bill.reg_id = std.reg_id GROUP BY bill.reg_id ORDER BY bill.id 我

这里,学生表是主表,其主键是计费表中的外键。 账单表中有多条记录具有学生注册号

我想要最新的帐单记录,限额为1
学生表没有限制。

试试这个查询,我认为应该可以

SELECT *
FROM student as std LEFT JOIN
     (SELECT * FROM billing WHERE `paid` < '4' ) AS bill
    ON bill.reg_id = std.reg_id
GROUP BY bill.reg_id
ORDER BY bill.id

我假设有一个名为billing_date的列,您必须使用正确的时间戳更新查询。这是给每个账单记录一个基于其最近性的排名,然后只收回最近的记录。假设mysql 8.0,您可以在早期版本中模拟它

SELECT *
FROM student as std LEFT JOIN
 (SELECT * FROM billing WHERE `paid` < '4' group by reg_id order by id desc) 
 AS bill
ON bill.reg_id = std.reg_id

请提供示例数据和所需结果。您在问题中包含的内容与php或mysqli无关。正在尝试设置账单表上的限制。选择*从学生处作为标准左侧加入选择*从已付款的账单处开始<'4'限制1按id描述的订单作为账单上的账单。reg_id=std.reg_idSELECT reg_id,id,name,paid,amount,tobe_pay,已付金额、日期、备注从选择注册id、MAXid、id、姓名、已付金额、待支付金额、已付金额、日期、来自计费组的备注按注册id描述为id按注册id排序;我尝试过这个,但无法加入学生表。此查询提供输出,但mysql显示错误。您不能使用SELECT*。。。组注册id和信任结果在MySQL中是正确的。。只有当列reg_id具有主键或唯一键时,才可以使用SELECT*,因为其他列的功能取决于reg_id列。它可以工作。我已经为bill表设置了主键和外键。仍然没有得到想要的结果。想要账单表的最后一条记录。您需要最后一条记录的输出。?请张贴您想要的输出样品,以便我们可以帮助您。我相信当您使用group by regid时,它将为每个注册id选择注册id、id、姓名、已付款、待付款金额、已付款金额、日期、备注,从选择注册id、MAXid、id、姓名、已付款、待付款金额、已付款金额、日期、,来自计费组的注释按注册id描述为按注册id排序的id;我尝试过这个,但无法加入学生表。这个查询给我输出,但mysql显示错误;检查与您的MariaDB服务器版本对应的手册,以了解正确的语法,以便在第1行使用“按注册id顺序按账单划分日期描述账单账单上的账单”。我想要所有学生的记录,但每个学生的账单表只有一条记录。我能够在mysql 8.0上使用虚拟数据,它做到了您想要的寻找。您可能需要在我使用的XAMPP for Windows 5.6.24的“付费”周围添加您的业务逻辑。其服务器版本:10.1.16-MariaDB-MariaDB.org binary distribution.row_number是在Maria 10.2中添加的,因此可能没有帮助。查看此处的答案,了解解决方案:
select
* 
from student std
left join (select
*, row_number() over (partition by reg_id order by billing_date desc) rn
from billing) bill on bill.reg_id = std.reg_id and rn=1