基于条件的 SQL 查询

标签 sql foreign-keys

我正在编写一个查询来检索翻译后的内容。我想要这样,如果没有给定语言 ID 的翻译,它会自动返回默认语言的翻译,ID 为 1。

select Translation.Title
      ,Translation.Summary
from Translation
where Translation.FkLanguageId = 3

-- If there is no LanguageId of 3, select the record with LanguageId of 1.

我正在使用 MS SQL,但我认为该理论不是特定于 DBMS 的。

提前致谢。

最佳答案

根据您对问题的措辞,这假定每个翻译只有 一个 行。如果每个 FkLanguageId 有多行并且我误解了,请告诉我们,查询当然会变得更复杂

select TOP 1
   Translation.Title
   ,Translation.Summary
from
    Translation
where
    Translation.FkLanguageId IN (1, 3)
ORDER BY
    FkLanguageId DESC

您将在另一个 RDBMS 中使用 LIMIT

关于基于条件的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4389329/

相关文章:

c++ - 使用目录中的文件名填充数据库

sql - 正则表达式匹配字符串和插入符号 (^) 之间的所有内容,不包括插入符号 (^)

sql - GRANT EXECUTE 存储过程是否授予您访问其中所有对象的权限?

mysql - 日期时间等于或大于 MySQL 中的今天

sql - JOIN (SELECT ...) ue ON 1=1?

ubuntu - "Host key verification failed"时如何建立ssh key 对

java - 使用外键从表中检索条目(Hibernate)

mysql - 如何从我的 MySQL 表中删除约束?

mysql - 文档显示 CakePHP 不支持组合键

mysql - 我怎样才能处理这个一对多的关系,这个约束在一个 note ON 字段上?