小编lvk*_*lvk的帖子

SQL Server:如果未满足条件,如何将1行作为默认值返回

我有一个消息表,其中包含消息ID字段,语言ID字段和文本字段.应用程序需要根据id和语言显示消息,这些消息一起构成唯一键.所有消息都存在于语言中EN,但并非所有消息都已翻译成其他语言.因此,对于英语,将始终选择一个记录.但是如果用户是法语并且应用程序需要显示消息#17并且它还不存在法语,我想要返回消息#17 in EN.我想在一个SELECT查询中完成此操作,最好没有IF语句.

编辑:根据提交的答案 - 需要澄清每条消息被翻译成大约10种语言,也许更多.有应该总是恰好 一个基于消息ID和郎ID返回行.但如果该行不存在,则应返回英文消息.

最终代码:
declare @msgid int=2, @langid varchar(2)='fr' SELECT isnull(xx.msg, en.msg) msgtext FROM appmessages en LEFT JOIN appmessages xx ON en.msgid = xx.msgid and xx.langid=@langid WHERE en.langid = 'en' and en.msgid=@msgid

sql database sql-server

6
推荐指数
2
解决办法
241
查看次数

标签 统计

database ×1

sql ×1

sql-server ×1