【发布时间】:2015-09-26 12:20:02
【问题描述】:
假设我们有两张桌子。
TabA(Acol1,Acol2,Acol3)
TabB(Bcol1,Bcol2.Ccol3)
要求是,在 Acol1,Bcol1 上连接两个表,如果 Acol3='C',则除了上述连接外,还基于 Acol2=Bcol2 进行连接。我们可以在单个 SQL 查询中做到这一点吗?连接是记录方式还是表格方式?
我能得到的一个解决方案是使用 Union,但我认为这不是一个优化的解决方案。还有其他解决方案吗?
我想到的另一个解决方案
SELECT A.*,B.* FROM TabA A
INNER JOIN TabB B ON A.Acol1 = B.BCol1
and case when A.Acol3='C' then A.ACol2 else '1' end =
case when A.Acol3='C' then B.BCol2 else '1' end ;
没有 case 和 Union 的任何其他解决方案?
提前致谢
【问题讨论】:
-
请编辑您的问题并提供示例数据和所需结果。目前尚不清楚您要做什么。
-
你能在你的加入中加入一个
or,还是你想要更多?例如on (a.col1 = b.col1) and (a.col2 != 'C' or a.col2=b.col2).