我有两张表table1
和table2
。两个表都具有相同的结构。他们在第一个表格中有4列(x1
,y1
,z1
和w1
以及x2
,y2
,z2
,w2
,在第二个表中。)
我想提取第二个表(x2
)第一列的值。程序如下:
y2=y0
和w2=w0
。x_i
,y_i
和z_i
)。x1==x_i and y1==y_i and z1==z_i
的所有行(我事先知道将提取一行或零行)。w1
中的值。如果它不等于w0
添加x_i
到列表中。如果没有从第一个表中提取的行,也请将x_i
添加到列表中。最后,我想要一个x2
的唯一值列表(没有重复项)。
我的问题是,所描述的程序是否可以由一个命令执行。
ADDED
w0
和y0
已知且已修复(只是一些固定值)。
答案 0 :(得分:1)
table1上需要一个只有空值的idColumn。它将用于测试左连接(代表条件号3)实际产生的结果与否。如果表的其他任何列不允许空值,则可以使用它而不是idColumn。
select distinct t2.x2 from table2 as t2 left join table1 as t1 on t1.x1 = t2.x2 and t1.y1 = t2.y2 and t1.z1 = t2.z2 where t2.y2 = y0 and t2.w2 = w0 and ( t1.w1 w0 or t1.idColumn is null )