Sql 在列值不相同的表上编写联接查询的最佳方法是什么?

Sql 在列值不相同的表上编写联接查询的最佳方法是什么?,sql,sql-server-2012,Sql,Sql Server 2012,我需要你帮我写一个问题。我是一个初学者,不知道哪种选择是最好的方法。 我尝试的选项是使用带有大小写条件的子查询将所有0转换为N,1转换为Y,并在列上进行连接。有没有其他替代和聪明的写作方式 我有两个表,一个是包含所有标准值的查找表。从第二个表中,我必须查找第一个表中的列值 范例 表1 表2 col_1 col_2 ABC 0 XYZ 1 表2中的值0在表1中为N,类似地,1为Y 我如何连接这些表 我的最终输出应该是 col1_1 col1_2 ABC N

我需要你帮我写一个问题。我是一个初学者,不知道哪种选择是最好的方法。 我尝试的选项是使用带有大小写条件的子查询将所有0转换为N,1转换为Y,并在列上进行连接。有没有其他替代和聪明的写作方式

我有两个表,一个是包含所有标准值的查找表。从第二个表中,我必须查找第一个表中的列值

范例 表1

表2

col_1    col_2
ABC      0
XYZ      1
表2中的值0在表1中为N,类似地,1为Y

我如何连接这些表

我的最终输出应该是

col1_1   col1_2
ABC      No
XYZ      Yes

这应该可以完成任务。但是,如果您有很多行,这不是最佳的

select table2.col_1, table1.col_2
from table2 inner join table1
on table2.col_2 = case table1.col_1 when 'Y' then 1 when 'N' then 0 else -1 end;

如果要查找标准值,“0”和“1”是什么?标准值是多少?我想你的推荐信已经过期了。你想做的并不难。根据你对“表2中的值0是表1中的N,同样的1是Y”的解释,你的最终输出是不正确的。查找表中是否有“0”和“1”id值,或者等同于“是”和“否”?是否有任何原因不能将值
0
1
添加到查找表中?如果我有很多行,最好的解决方案是什么?最好的方法是在所有表中使用相同的数据。如果不能,则可以选择查找表。否则,我怀疑SQL将无法使用索引。
select table2.col_1, table1.col_2
from table2 inner join table1
on table2.col_2 = case table1.col_1 when 'Y' then 1 when 'N' then 0 else -1 end;