我有两个表,如下所示:
第一个表用于存储值:
id | column1 | column2
-----------------------
1 | aaa | xxx
1 | aaa | yyy
1 | bbb | zzz
第二个表用于存储转换后的值:
id | old | new
-----------------------
1 | aaa | ooo
1 | yyy | ppp
,结果应为
id | column1 | column2
-----------------------
1 | ooo | xxx
1 | ooo | ppp
1 | bbb | zzz
有没有办法使这项工作成功?
答案 0 :(得分:1)
Column1和Column2应该分开连接。如果没有匹配的转换,也应使用ISNULL或COALESCE。下面是一个示例(提琴:http://sqlfiddle.com/#!18/160f0/3/0)
CREATE TABLE ValuesTable (
Column1 varchar(3),
Column2 varchar(3)
);
INSERT INTO ValuesTable (Column1, Column2) VALUES
('aaa', 'xxx'), ('aaa', 'yyy'), ('bbb', 'zzz');
CREATE TABLE TranslationTable (
Old varchar(3),
New varchar(3)
);
INSERT INTO TranslationTable (Old, New) VALUES
('aaa', 'ooo'), ('yyy', 'ppp');
SELECT ISNULL(c1.New, Column1), ISNULL(c2.New, Column2) FROM ValuesTable
LEFT JOIN TranslationTable c1 ON c1.Old = Column1
LEFT JOIN TranslationTable c2 ON c2.Old = Column2