SQL获取最新记录

SQL获取最新记录,sql,select,Sql,Select,很确定我的问题标题很糟糕,但无论如何,我有一个名为invoices的表,在该表中,每个invoices都有一个id,每个id都有一个客户id,因此客户将有多个发票。我正在努力获得最新的发票余额,我写的代码不起作用,有人能告诉我我做错了什么吗 SELECT c.clientid, c.clientname, c.billingdate, (SELECT remainingbalance FROM invoice i WHERE i.client =

很确定我的问题标题很糟糕,但无论如何,我有一个名为invoices的表,在该表中,每个invoices都有一个id,每个id都有一个客户id,因此客户将有多个发票。我正在努力获得最新的发票余额,我写的代码不起作用,有人能告诉我我做错了什么吗

SELECT c.clientid,
    c.clientname,
    c.billingdate,
    (SELECT remainingbalance 
     FROM invoice i 
     WHERE i.client = c.clientid) AS remaining
FROM client c
ORDER BY clientname
使用内部联接

试试这个

更新: 我已经修改了我的答案,看看是否有效

 SELECT c.clientid,
 c.clientname,
 c.billingdate,
 d.remainingbalance
 FROM client c 
 INNER JOIN (
             SELECT  clientid,
             MAX(invoiceid) invoiceid
             FROM    invoice
             GROUP BY  clientid
             ) d
 ON c.clientid = d.clientid
 ORDER BY c.clientname
使用内部联接

试试这个

更新: 我已经修改了我的答案,看看是否有效

 SELECT c.clientid,
 c.clientname,
 c.billingdate,
 d.remainingbalance
 FROM client c 
 INNER JOIN (
             SELECT  clientid,
             MAX(invoiceid) invoiceid
             FROM    invoice
             GROUP BY  clientid
             ) d
 ON c.clientid = d.clientid
 ORDER BY c.clientname

在您的子选择中按i.id DESC排序

在您的子选择中按i.id DESC排序

立即尝试以下操作

SELECT  c.clientid, 
        c.clientname, 
        c.billingdate, 
        (
            SELECT  TOP 1 
                    remainingbalance  
            FROM    invoice i  
            WHERE   i.client = c.clientid
            ORDER BY i.invoiceid DESC
        ) AS remaining 
FROM    client c 
ORDER BY    clientname
您正在使用哪些RDM

另一种方法如下

SELECT  c.clientid,  
        c.clientname,  
        c.billingdate,
        rb.remainingbalance
FROM    client c  INNER JOIN
        (
            SELECT  i.clientid,
                    i.remainingbalance 
            FROM    invoice i INNER JOIN
                    (
                        SELECT  clientid,
                                MAX(invoiceid) invoiceid
                        FROM    invoice
                        GROUP BY    clientid
                    ) m ON  i.invoiceid = m.invoiceid
                        AND i.clientid = m.clientid
        ) rb    ON  c.clientid = rb.clientid
ORDER BY clientname 

首先获取每个客户的最新发票,然后从该发票中获取所需的详细信息,并显示客户信息。

立即,尝试类似的操作

SELECT  c.clientid, 
        c.clientname, 
        c.billingdate, 
        (
            SELECT  TOP 1 
                    remainingbalance  
            FROM    invoice i  
            WHERE   i.client = c.clientid
            ORDER BY i.invoiceid DESC
        ) AS remaining 
FROM    client c 
ORDER BY    clientname
您正在使用哪些RDM

另一种方法如下

SELECT  c.clientid,  
        c.clientname,  
        c.billingdate,
        rb.remainingbalance
FROM    client c  INNER JOIN
        (
            SELECT  i.clientid,
                    i.remainingbalance 
            FROM    invoice i INNER JOIN
                    (
                        SELECT  clientid,
                                MAX(invoiceid) invoiceid
                        FROM    invoice
                        GROUP BY    clientid
                    ) m ON  i.invoiceid = m.invoiceid
                        AND i.clientid = m.clientid
        ) rb    ON  c.clientid = rb.clientid
ORDER BY clientname 


首先获取每个客户的最新发票,然后从该发票获取所需的详细信息,并显示客户信息。

根据什么标准最新?是MAXInvoiceID还是MAXInvoiceDate?您正在使用什么RDM?我正在尝试查找我的RDM…我如何查找?最新的标准是什么?是MAXInvoiceID还是MAXInvoiceDate?您使用的RDM是什么?我正在尝试查找我的RDM…如何查找?发票表中有多行,他只需要最后一行。我没有收到错误,但它返回多个客户端,我只想要发票中id最新的那一行他在发票表中有多行,他只想要最后一行。我没有收到错误,但它返回多个客户端,我只想要发票中id最新的那一行,这也会破坏你的想法,因为每个客户端可以返回超过1行…然后在desc之后添加限制1,这样也会破坏您的想法,因为每个客户机可以返回超过1行……然后在描述后添加限制1。第一行给出了“1 i.remainingbalance FROM invoice i WHERE i.client=c.clientid ORDER BY i.invoiceid”附近的语法错误。您使用的是哪种RDBMS?请提供您的表模式。试图找出这个问题…我有一个叫做信息模式的东西,有很多表,我在哪里可以找到我的RDBMS?MySQL、SQL Server、MS Access、Oracle?您正在使用哪个数据库?并为我们提供每个表中的列名,即表架构。然后使用第一个查询示例?第一个示例在“1 i.remainingbalance FROM invoice i WHERE i.client=c.clientid ORDER BY i.invoiceid”附近给出了一个语法错误,您使用的是哪种RDBMS?请提供您的表模式。试图找出这个问题…我有一个叫做信息模式的东西,有很多表,我在哪里可以找到我的RDBMS?MySQL、SQL Server、MS Access、Oracle?您正在使用哪个数据库?并为我们提供每个表中的列名,即表架构,然后使用第一个查询示例?