sql-server – 选择所有记录,如果存在连接,则连接表A,否则连接表
发布时间:2021-05-22 05:54:19 所属栏目:编程 来源:网络整理
导读:以是这是我的景象: 我正在为我的项目举办当地化,凡是我会在C#代码中执行此操纵,可是我想在SQL中执行此操纵,由于我试图轻微增进SQL. 情形:SQL Server 2014 Standard,C#(.NET 4.5.1) 留意:编程说话自己应该是无关紧急的,我只是为了完备性而包括它. 以是我完
另外,我为它谬妄漫长致歉,我只是不想有任何歧义.我常常在StackOverflow上看到缺乏实质的题目,不想在这里犯这个错误. 办理要领这是我提出的第一种要领:DECLARE @ChosenLanguage INT = 48; SELECT sc.Id,Result = MAX(COALESCE( CASE WHEN lst.LanguageId = @ChosenLanguage THEN st.Text END,CASE WHEN lst.LanguageId = sk.DefaultLanguageId THEN st.Text END) ) FROM dbo.SupportCategories AS sc INNER JOIN dbo.StringKeys AS sk ON sc.StringKeyId = sk.Id LEFT OUTER JOIN dbo.LanguageStringTranslations AS lst ON sk.Id = lst.StringKeyId AND lst.LanguageId IN (sk.DefaultLanguageId,@ChosenLanguage) LEFT OUTER JOIN dbo.StringTranslations AS st ON st.Id = lst.StringTranslationId --WHERE sc.Id = 1 GROUP BY sc.Id ORDER BY sc.Id; 根基上,获取与所选说话匹配的隐藏字符串并获取全部默认字符串,然后举办聚合,这样您只需为每个Id选择一个 – 优先选择所选说话,然后将默认值作为后备. 您可以行使UNION / EXCEPT执行相同的操纵,但我猜疑这险些总会导致针对沟通工具的多次扫描. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读