2014-02-13 371 views
0

我認爲我所追求的是相當初級的,但迄今爲止我還沒有能夠通過我的實驗獲得預期的結果。同一張表上的SQL子查詢

我在一個表上操作,其中來自一個已知行的值確定選擇來自同一表的哪些其他行。

爲了說明我想做的事,兩個查詢:

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

您可以用加入做到這一點:

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; 
+0

謝謝,子查詢是什麼讓我在正確的軌道上。 – markdsievers