我必须从2个表构建一个视图:语言和文章
表语言:
langId:1 langCode:en priority: 1
langId:2 langCode:da priority: 2
langId:3 langCode:es priority: 3
表文章:
langId: 1, articleId: 1 title: "First art-en" originId: "ASDF"
langId: 2, articleId: 2 title: "First art-da" originId: "ASDF"
langId: 1, articleId: 3 title: "Second art-es" originId: "AAAA"
不同语言的相同文章将具有唯一的OriginId
。
当文章不存在于特定语言且应该基于语言优先级时,我需要选择替换行。
实现这一目标的最佳方法是什么? 我想避免使用CTE / Temp表和循环语句。
答案 0 :(得分:0)
这是优先级查询。您可以使用row_number()
:
select al.*
from (select a.*,
row_number() over (partition by l.priority) as seqnum
from article a join
language l
on a.langid = l.langid
) al
where seqnum = 1;