如何通过SQL中的LEFT JOIN替换值?

cha*_*m15 1 sql sqlite

我有一个包含一组翻译的表,我想查询插入的翻译的原始表(如果存在翻译).例如:

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

谢谢!

D S*_*ley 8

像这样?

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返回输入列表中的第一个非空值.