SQL获取最新记录
很确定我的问题标题很糟糕,但无论如何,我有一个名为invoices的表,在该表中,每个invoices都有一个id,每个id都有一个客户id,因此客户将有多个发票。我正在努力获得最新的发票余额,我写的代码不起作用,有人能告诉我我做错了什么吗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 =
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?您正在使用哪个数据库?并为我们提供每个表中的列名,即表架构,然后使用第一个查询示例?