2010-06-14 16 views
5

tengo una tabla comoAuto unirse a una mesa

Employee 
================== 
name  salary 
================== 
a  10000 
b  20000 
c  5000 
d  40000 

quiero conseguir todos los empleados cuyo salario es mayor que el salario de un. No quiero utilizar ninguna consulta anidada o secundaria. Se ha preguntado en una entrevista y la sugerencia fue utilizar la autocombinación. Realmente no puedo entender cómo lograr lo mismo.

Respuesta

16
select e1.* from Employee e1, Employee e2 where 
      e2.name = 'a' and 
      e1.salary > e2.salary 

Usando auto unen

select e1.* from Employee e1 join Employee e2 on 
      e2.name = 'a' and 
      e1.salary > e2.salary 
+1

+1 de la vieja escuela. Bah, ¿quién necesita la palabra clave 'join'? :-) – paxdiablo

+0

muchas gracias ... Estaba pensando de una manera compleja ... – Mohit

+0

Muchas gracias. Explicado de una manera simple – qasimzee

1
SELECT emp1.* FROM Employee emp1 JOIN Employee emp2 
ON emp2.Name = 'A' and emp1.Salary > emp2.Salary 
+0

esto funcionará. solo la modificación será mysql, es sensible a mayúsculas y minúsculas así que emp2.Name = 'A' debe ser emp2.Name = 'a' – Salil

Cuestiones relacionadas