PostgreSQL比较两个单独表中的多行

时间:2016-06-05 18:40:10

标签: postgresql

我有两个表:表1和表2.它们实际上是识别的(实际上,这是我想要验证的内容),但serial_id列除外。

我尝试使用列 A,B,C和D上的连接来比较表1和表2的列 E,F,G,H 中的值。问题是,我需要比较表1和表2中的特定serial_id。如果我知道相应的serial_ids对,我该如何为多个serial_id执行此操作?

例如,表1中的serial_id 423对应于表2中的serial_id 1011。

SELECT
  table_1.A,
  table_1.B,
  table_1.C,
  table_1.D,
  table_2.E - table_1.E,
  table_2.F - table_1.F,
  table_2.G - table_1.G,
  table_2.H - table_1.H
FROM
  table_1 join table_2 using (A, B, C, D)
WHERE
  table_1.serial_id = 423 AND table_2.serial_id = 1011

如果我还有10对,我喜欢比较怎么办?多个联合加入?由于许多原因,似乎次优。

2 个答案:

答案 0 :(得分:0)

如果您知道要比较的所有ID,并且您要比较相同的列,则可以使用 OR

像:

WHERE
  (table_1.serial_id = 423 AND table_2.serial_id = 1011) OR
  (table_1.serial_id = x AND table_2.serial_id = y) OR
  ...

答案 1 :(得分:0)

写这个的最短方法是在值对上使用IN条件:

where (table_1.seria_id, table_2_serial_id) in ( (423,1011), 
                                                 (424,1012), 
                                                 ...)