数据库中的 Foreach 循环 SQL

Foreach loop in the database SQL

我在数据库中有两个 table(账户和交易)。我想在Transactiontable中获取一个账户的最新交易。如果我这样做,假设 PHP。它只是首先获取存储在数组中的帐户 table 中的所有帐户。然后 select 每个帐户的交易 table 中的前 1 笔交易(基于交易日期的最新交易)通过在数组上使用 foreach 循环。

我的问题是,是否可以直接从数据库进行循环?确切地说是 Foreach 循环,因此我不必创建由 PHP、Java 等任何编程语言制作的应用程序来获取数据。

谢谢!

PS: 我正在使用 SQL Server 2000

如果您想要给定帐户的最新交易,您可以这样做:

select t.*
from transactions t
where t.accountid = $accountid
order by datetime desc
limit 1;
select TOP (1) *
from transactions 
where accountid = "Pass AccountId Here"
order by datetime desc

使用外部应用。即使帐户没有交易,它也会 return 行包含 NULL。

SELECT * FROM Accounts a
OUTER APPLY (SELECT * FROM Transactions t WHERE t.AccountID = a.AccountID ORDER BY t.TransactionDate DESC)o

这应该会为您提供所有用户的最新交易信息...

SELECT t.*
From
transactions t1
INNER JOIN
(select max(t.transactionDate) transactionDate
, t.accountid
from transactions t
Group by t.accountid) t2
on ti.accountid=t2.accountid
and t1.transactionDate=t2.transactionDate
order by t1.transactionDate desc

假设:只有一个交易与每个账户的最大交易日期相关联

要获取所有用户的最新交易,您可以使用此 sql 查询,您不必在其中一一输入帐户 ID

SELECT *
FROM Transaction t, Account a
WHERE t.account_id = a.account_id
GROUP BY account_id 
ORDER BY updateTime DESC

试试这个,它应该在 SQL Server 2000 中工作:

SELECT A.*, LastTrasaction.*
FROM
   Accounts A
   LEFT OUTER JOIN (
       SELECT T.*
       FROM Transactions T
       INNER JOIN
       (
           SELECT AccountId, MAX(TransactionId) AS TrasnactionId
           FROM Trasactions
           GROUP BY AccountId     
       ) LT ON T.TrasactionId = LT.TransactionId
   ) LastTrasaction ON A.AccountId = LastTrasnaction.AccountId