我在MySQL中有以下语言表来选择不同语言的文本。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语句?
对我来说很可靠:-) – lockdoc
我认为这段代码更好: SELECT 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 FROM tableName b ON b.language ='de'and a.language ='def'AND a.'GROUP' = b.'GROUP' –