我有一个包含一组翻译的表,我想查询插入的翻译的原始表(如果存在翻译).例如:
CREATE TABLE foo (
id TEXT,
key TEXT
);
CREATE TABLE translations (
key TEXT,
value TEXT
);
INSERT INTO foo(id, key) VALUES('1', '1');
INSERT INTO foo(id, key) VALUES('2', '2');
INSERT INTO foo(id, key) VALUES('3', '5');
INSERT INTO foo(id, key) VALUES('4', '6');
INSERT INTO translations(key, value) VALUES('5', '7');
INSERT INTO translations(key, value) VALUES('6', '8');
我想要一个查询来返回表:
1 1 2 2 3 7 4 8
SQLfiddle:http://sqlfiddle.com/#!7/ee8cc
谢谢!
像这样?
SELECT f.id, f.key, COALESCE(t.value, f.key) AS TranslatedKey
FROM foo f
LEFT JOIN translations t
ON f.key = t.key
Run Code Online (Sandbox Code Playgroud)
t如果未找到匹配项,则使用左连接时,值将为null. COALESCE返回输入列表中的第一个非空值.