2012-05-17 58 views
2
select * from workers where id = uid and age = uage` -- sql1 
select uid,uage from users where uage>20`    -- sql2 

我想使用sql2作爲sql1的條件下,即uidsql1使用uage被來自sql2如何完成此查詢?

+0

下一次添加MySQL標籤。 :) –

+0

我們當然可以幫助你的語法,但我不確定你真的想在這裏返回 - 如果你查詢的ID爲什麼你需要一個年齡? – n8wrl

+1

瞭解[SQL連接](http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html)。 – eggyal

回答

5

您可以加入兩個表:

SELECT w.* 
FROM workers w 
INNER JOIN users u 
ON w.id = u.uid AND w.age = u.uage 
WHERE u.uage > 20 
+0

他或她想要使用sql2作爲sql1的條件而不是'INNER JOIN' –

+1

@MarkYao - 並且使用這個'JOIN',操作符獲得了該結果。 – Lamak

0

你可以嵌套查詢使用臨時表。第一個查詢創建第二個查詢的臨時表。

-1

您可以使用子查詢。
代碼:

select * from workers where (id,age) =(select uid,uage from users where uage>20); 
+0

@Wiseguy在投票之前,您需要了解更多關於mysql子查詢的知識。 –

+0

我的問題是修辭。我實際上並沒有問。我的意思是說,如果子查詢返回多行,它將不起作用。但是,如果將'='更改爲'IN',它應該可以工作。 – Wiseguy