数据库中的 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
我在数据库中有两个 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