使用Top只获取第一行,但是从子查询中的多个记录中获取

时间:2013-01-11 05:24:00

标签: sql ms-access

我有两张桌子,一张是顾客,另一张是付款

需要具有特定条件的客户的最近付款。为该specific_criteria创建了一个查询)

select top 1 *
from payments
where id in (select id from specific_criteria);

显然,这只会返回一行。

我实际上无法在此数据库中编写VB代码来执行此操作。

寻找一些可以获得每位客户最近付款的SQL代码。

2 个答案:

答案 0 :(得分:1)

SELECT c.*,
       p.*
FROM Customers c
     INNER JOIN
     Payments p ON p.Customer_ID=c.ID
WHERE p.ID IN (SELECT p2.ID FROM
               (SELECT p1.ID, MAX(p1.payment_date)
               FROM Payments p1
               GROUP BY p1.ID) AS p2)

答案 1 :(得分:0)

这样的事情会起作用吗?

select c.*, (
    select top 1 p.*
    from payments p
    where p.customer_id = c.id
    order by p.payment_date desc )
from customers c
where customer_critera