Mysql,在case语句中获取一个结果(行)

时间:2014-11-17 23:24:21

标签: mysql select case

我需要帮助。我想在SELECT语句中获得一个结果,但我得到两个。我想要的是,如果有问题语言的文字',请回复文字 但 如果在提问语言中没有文本,则返回默认语言文本WHERE'text_id = 1'

textlang
lang_id  text_id  text
1        1        EnglishText
2        1        SpanishText

my code:
SELECT text FROM textlang Where text_id ='1' 
and 
CASE lang_id 
WHEN 'asked_language' THEN lang_id = 'asked_language'  
ELSE lang_id ='default language' 
END

如果我选择西班牙语,此代码会同时提供英语和西班牙语文本。我只需要一个结果。 任何的想法? 谢谢!

数据库架构

CREATE TABLE lang(
ID INT NOT NULL auto_increment PRIMARY KEY,
LangCode char 5,
LangName nvarchar(50)
);

CREATE TABLE text(
text_id INT NOT NULL auto_increment PRIMARY KEY
);

CREATE TABLE textlang(
textlang_id INT NOT NULL auto_increment PRIMARY KEY,
lang_id INT,
text_id INT,
text varchar(150),
FOREIGN KEY(lang_id) REFERENCES lang(ID),
FOREIGN KEY(text_id) REFERENCES text(text_id)
);

1 个答案:

答案 0 :(得分:0)

您可以尝试COALESCE()

SELECT COALESCE(r.text, d.text) AS text
FROM
  (SELECT text
  FROM textlang
  WHERE text_id = 1 AND lang_id = @requestedLanguage) AS r,
  (SELECT text
  FROM textlang
  WHERE text_id = 1 AND lang_id = @defaultLanguage) AS d;

有关它的更多信息here

我还没有尝试过这样我先写下我的头脑然后先测试它,它可能无法正常工作......