0

我想基于 3 个其他表创建一个临时表。但是有一个条件可能适用也可能不适用,具体取决于第三张表中是否存在条目。如何在“where”条件下插入不同的案例?

select table1.tran_num, table2.impact
from table 1, table2, table3
where tables1.tran_num = 12345
and table1.index = table2.index
"and case when table2.index in table3.index then table2.version = table3.version"
4

3 回答 3

0

你只需要使用INNER JOIN

select  table1.tran_num, table2.impact
from    table1 
        INNER JOIN table2
            ON table1.index = table2.index
        INNER JOIN table3
            ON table2.version = table3.version
where   tables1.tran_num = 12345

上面的查询仅在所有表中都存在所有记录时才显示记录。但是,如果您希望即使在 上不存在的列仍然显示记录versiontable2那么table3aLEFT JOIN是必需的。

select  table1.tran_num, table2.impact
from    table1 
        INNER JOIN table2
            ON table1.index = table2.index
        LEFT JOIN table3
            ON table2.version = table3.version
where   tables1.tran_num = 12345

要了解更多关于加入的信息,请参阅下面的文章

于 2013-01-07T00:51:07.900 回答
0

使用左连接和 where 子句类似于

where joined_table.id is null or joined_table.filter_col in (1,2,3)

例如:

select t1.id, t2.id
from table1 t1
left join table2 t2
 on t1.fk_id = t2.id
where t2.id is null or t2.filter_col in (1,2,3,4)

上面的查询将从 t1 获取不在 t2 上的所有记录,或者从 t1 获取在 t2 上的记录,并且它们在 t2 上的等效 filter_col 在 (1,2,3,4)

于 2013-01-07T00:56:05.550 回答
0

你可以试试下面的逻辑:

 IF EXISTS ( SELECT *
 FROM tablea a Left JOIN tableb b 
ON a._id = b._id 
Left JOIN tablec c ON b._id = c._id 
 SELECT 1 ELSE SELECT 0
于 2013-01-07T00:57:12.813 回答