我有两张A和B表.A和B之间存在很多关系.A_Id是外键。
SELECT A.*, B.Title FROM A JOIN B ON A.Id = B.A_Id
我需要从表A中获取记录,从表B中获取匹配记录的标题 。如果表B中存在多个值,则需要选择具有最大Id的记录(表B)。
例如。表B中有两个A_Id 1的记录。我需要从表A和' title5'中选择一行。来自表B,用于匹配记录。
我试过
{{1}}
答案 0 :(得分:1)
您可以使用使用ROW_NUMBER
的派生表来枚举A_Id
分区中的记录:
select A.Id, A.Name, B.Title
from A
inner join (
select A_Id, Title,
ROW_NUMBER() OVER (PARTITION BY A_Id ORDER BY Id DESC) AS rn
from B
) AS B on A.Id = B.A_Id and B.rn = 1
带B
的派生表B.rn = 1
的记录是其分区中具有最大Id
值的记录,并且是INNER JOIN
操作中使用的值。 / p>
答案 1 :(得分:0)
试试这个
select A.Id, A.Name,b.title
from A
inner join (
select A_Id, max(id) as id
from B group by A_Id
) AS c on A.Id = c.A_Id
inner join b on b.id = c.id
答案 2 :(得分:0)
这可能不太有效,但肯定有效:)
选择a。*,b.title 从a,b 其中a.id = b.a_id 和b.id =(从b中选择max(b.id),其中A_Id = a.id)