当前位置: 首页 > 面试题库 >

MySQL通过键选择行或回退以默认键选择

司徒焕
2023-03-14
问题内容

我在MySQL中有以下语言表,用于选择其他语言的文本。

CREATE TABLE `lang` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`group` INT(10) UNSIGNED NOT NULL,
`text` VARCHAR(255) NULL DEFAULT NULL,
`language` VARCHAR(10) NOT NULL DEFAULT 'def',
PRIMARY KEY (`id`),
UNIQUE INDEX `group_language` (`group`, `language`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
ROW_FORMAT=DEFAULT

该表包含以下数据

id  group  text               language
1   1      This is English    def
2   2      Helo sir           def
3   3      how are you?       def
4   3      Wie geht es dir?   de

组字段告诉我每种翻译属于哪些文本。在上面的示例中,组“ 3”具有默认文本(英语)和德语翻译。

现在,我想选择德语的所有文本,如果不存在,我将要使用后备英语文本。

有人知道如何将它们整合到SQL语句中吗?


问题答案:
SELECT  DISTINCT
        COALESCE(b.ID, a.ID) ID,
        COALESCE(b.`GROUP`, a.`GROUP`) `GROUP`,
        COALESCE(b.`text`, a.`text`) `text`,
        COALESCE(b.language, a.language) language
FROM   TableName a
       LEFT JOIN
        (
            SELECT ID, `GROUP`, `text`, language
            FROM tableName
            WHERE language = 'de'
         ) b ON a.ID <> b.ID AND a.`GROUP` = b.`GROUP`
  • SQLFiddle演示


 类似资料:
  • 问题内容: 我有一个很奇怪的要求,其中要求我默认在HTML的下拉菜单中没有选择任何选项。然而, 我不能用这个 因为,为此,我将必须进行验证以处理第一个选项。有人可以在没有将第一个选项作为select标签的一部分的情况下帮助我实现此目标吗? 问题答案: 也许这会有所帮助 将默认显示。但是,如果您选择一个选项,则将无法再次选择它。 您也可以通过添加一个空白来隐藏它 因此它将不再显示在列表中。 选项2

  • 我有一个包含国家/地区名称的列表框。我在VS2015(C#)中使用Windows Forms。 通过键入在列表框中选择名称时,它只允许一个字母。因此,如果我键入“A”,它将跳转到以“A”开头的第一项,但如果我按“As”,列表框将查看以“s”开头的项目。我找到了组合框和文本框的答案: 通过键入在组合框中选择一个项目 ,但看起来像列表框不支持自动完成模式。有什么解决方案吗?

  • 我在MySQL中有下表。 表1(身份证、名字、姓氏、电话号码) 表2(TID、电子邮件) 我在 Table1 中有 25000 行,而我的 Table2 包含 20000 行。我在表 2 中的 TID 是引用表 1 的主键 ID 的外键。如果姓氏为 NULL,则 Table2 中将不存在这些 ID。现在,我正在尝试仅针对具有姓氏的表合并这两个表。 我重新定义了表2的模式,如下所示。 Table2(

  • 我的WPF应用程序中有一个ComboBox,我在其中显示项目列表。大多数情况下,第一个项目是项目资源列表中的正确选择,只有在个人请求时,才能更改项目。现在,“我的”组合框加载列表,但从不显示所选项目的第一个项目。有人能帮我吗。这是我的代码。 XAML: 代码隐藏: 我在 itemsSource 中有值,已选择的 itme 也有一个值,但永远不会显示在屏幕上。 感谢任何帮助。

  • 问题内容: 问题: 无法从CSS选择器特定元素中选择。需要验证注册用户是否可以成功更改其密码。我试过了类的不同属性来调用它。当尝试前两个示例时,结果是方法中的异常错误。最后的尝试将调用第一个类实例并重置密码字段(失败)。 尝试过: 目的: 我需要选择共享同一班级的项目。如下所示,该类是共享的。 问题答案: 编辑:因为选择器需要一个,或,但是它们本身都不是。 提供要匹配的类名,并从那里指定要选择的特

  • *****原问题* * * * * * * * 所以我通常使用Visual Studio Code,但我目前的项目需要成熟的Visual Studio。 我喜欢VS Code中的一个命令是能够选择一段文本的多个实例。即。 < code >这个。 <代码> Id <代码> = standVM。 < code > Id < code >; 因此,如果我在 VS Code 中突出显示 ,我可以按 并突出