找到需要派生一组的交集

时间:2015-08-25 18:29:09

标签: sql postgresql select

我有两个表:output_hashbaselineoutput_hash包含plot_idbaseline包含plot_numberplot_id的前6位数由plot_number组成。如何找到plot_id中的output_hashplot_number中的baseline之间的交集?我希望结果为plot_number(不是baseline)。因此,要明确plot_id包含plot_number的价值。

因此,如果111234_5位于plot_id111234位于plot_number,那么我希望在我的结果中使用222345_2。但是,如果plot_id位于plot_number222345没有222345_2,那么这不应该在结果中(如果plot_id位于{{1}但是没有plot_number222345开头,那么222345将被排除在结果之外。

2 个答案:

答案 0 :(得分:1)

一种方法是在子查询中使用exists运算符和like运算符:

SELECT *
FROM   output_hash o
WHERE  EXISTS (SELECT *
               FROM   baseline b
               WHERE  o.plot_id LIKE b.plot_number || '%')

答案 1 :(得分:0)

选择      *    FROM output_hash    加入基线      ON SUBSTR(plot_id,1,6)= plot_number :: TEXT;