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

Je veux utiliser sql2 comme condition de sql1, à savoir la uid et uage utilisé dans sql1 est venu de sql2.Comment terminer cette requête?

+0

prochaine fois ajouter un tag MySql. :) –

+0

Nous pouvons certainement vous aider avec la syntaxe, mais je ne suis pas sûr de ce que vous voulez vraiment revenir ici - si vous interrogez sur l'ID, pourquoi auriez-vous besoin d'un âge? – n8wrl

+1

En savoir plus sur [Jointures SQL] (http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html). – eggyal

Répondre

5

Vous pouvez joindre les deux tables:

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

Il ou elle veut utiliser sql2 comme la condition de sql1 pas 'INNER JOIN' –

+1

@MarkYao - Et avec ce' JOIN' l'op obtient ce résultat. – Lamak

0

Vous pouvez faire des requêtes imbriquées avec une table temporaire. Thr première requête crée une table temporaire que le second interroge.

-1

Vous pouvez utiliser la sous-requête.
code:

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

@Wiseguy Avant de voter, vous devez en savoir plus sur la sous-requête mysql. –

+0

Ma question était rhétorique. Je ne demandais pas vraiment; Je voulais dire que cela ne fonctionnerait pas si la sous-requête renvoyait plus d'une ligne. Cependant, cela devrait fonctionner si vous changez '=' en 'IN'. – Wiseguy