我可以通过一个命令执行此操作吗?

时间:2010-12-03 22:02:19

标签: mysql select join

我有两张表table1table2。两个表都具有相同的结构。他们在第一个表格中有4列(x1y1z1w1以及x2y2z2w2,在第二个表中。)

我想提取第二个表(x2)第一列的值。程序如下:

  1. 从第二个表格中提取y2=y0w2=w0
  2. 的所有行
  3. 对于每个提取的行,取前三列的值(x_iy_iz_i)。
  4. 从第一个表中提取x1==x_i and y1==y_i and z1==z_i的所有行(我事先知道将提取一行或零行)。
  5. 对于提取的行(如果有的话),检查列w1中的值。如果它不等于w0添加x_i到列表中。如果没有从第一个表中提取的行,也请将x_i添加到列表中。
  6. 对步骤1中第二个表中提取的所有行重复此过程。
  7. 最后,我想要一个x2的唯一值列表(没有重复项)。

    我的问题是,所描述的程序是否可以由一个命令执行。

    ADDED

    w0y0已知且已修复(只是一些固定值)。

1 个答案:

答案 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 )