2012-05-17 60 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