同一个表上的SQL子查询

时间:2014-02-13 04:23:48

标签: sql postgresql

我认为我所追求的是相当基本的,但到目前为止,我还没有通过我的实验得到预期的结果。

我正在一个表上运行,其中一个已知行的值确定选择了同一个表中的哪些其他行。

在两个查询中说明我想要的内容:

SELECT id, gender, sport, age
    FROM 
        person 
    WHERE 
       id = '123';

-- using id, gender, sport and age as inputs into the next query
SELECT id, age, sport, gender 
    FROM 
        person 
    WHERE 
       id != $1 AND looking_for_gender = $2 AND looking_for_sport = $3 AND min_age <= $4;

我在from子句中尝试了不同种类的连接和子查询,但是无法从单个查询中获得满意的结果。

提前感谢任何方向。

1 个答案:

答案 0 :(得分:1)

您可以通过加入来执行此操作:

SELECT p.id, p.age, p.sport, p.gender 
FROM person p cross join
     (select * from person where id  = 123
     ) p1
WHERE p.id <> p1.id AND p.looking_for_gender = p1.looking_for_gender AND
      p.looking_for_sport = p1.looking_for_sport AND p.min_age <= p1.min_age;