PostgreSQL从两个临时表中选择每一行并比较它们的值

时间:2013-12-18 14:37:57

标签: sql postgresql select

我有两个表,foo和bar都具有相同的架构和行类型

Table1

name varchar
id int
age int

Foo包含300条记录,Bar包含100条记录。是否有一个select语句可以让我将Foo中的每一行与bar中的每一行进行比较,以确定foo.age> bar.age?因此,如果它是java中的for循环,它将看起来像这样:

for(int i = 0; i < Foo.length; i++){
    for(int j = 0; j < Bar.length; j++){
       //Select here if foo[i].age > bar[j].age
    }
}

编辑后续问题:

如果我有一个名为'foobar'的临时表,使用与'表1'中相同的模式我如何将行只插入foobar中,只是foo的一部分进入临时表。例如在java:

List list = new LinkedList<Table1>
for(int i = 0; i < Foo.length; i++){
    for(int j = 0; j < Bar.length; j++){
       if(foo[i].age > bar[j].age){
            list.add(foo[i]);
       }
    }
}

2 个答案:

答案 0 :(得分:1)

select *
from foo
  cross join bar
where foo.age > bar.age

答案 1 :(得分:0)

select * from foo cross join bar where foo.age > bar.age

会这样做,但我想知道你为什么要将一个条目与其他表中的每个条目进行比较。