从另一个数据库获取五个最近的页面访问

问题描述

我正在编写一个查询,其中应提供ID,名称和城市,以及最后访问的五个页面。 ID,名称和城市来自table1,最后访问的五个页面来自table2。

我现在拥有的是:

SELECT 
id AS `ID`,name AS `Company Name`,city AS `City`,(
    SELECT table2.pagePath
    FROM table2
    WHERE table2.visitdate = 
        (
            SELECT MAX(table2.visitdate)
            FROM table2
        )
)

FROM table1
LEFT JOIN table2
ON table1.id = table2.id
WHERE zip_code = "1111 AB"
GROUP BY table1.id;

您可能会注意到,它不起作用...

我正在尝试使用子查询获取最近访问的页面,这是五个页面中的第一个。我得到一个响应,对于所有返回的行,这是相同的页面路径。

谁能将我推向正确的方向?

干杯!

解决方法

我认为您想要这样的东西:

select t.*,t2.*
from table1 t1 left join
     (select t2.*,row_number() over (partition by t2.id order by t2.visitdate desc) as seqnum
      from table2 t2
     ) t2
     on t2.id = t1.idand t2.seqnum <= 5;

请注意,您的查询似乎具有问题中未描述的逻辑。我专注于您所询问的查询,而不是似乎与该问题没有太大关系的查询。