Bienvenido a proyecto on line, aquí vas a encontrar la solucíon a lo que necesitas.
Solución:
Si lo haces:
select *
from t
order by value desc
limit N
Obtendrá las N filas superiores.
Si lo haces:
select *
from t join
(select min(value) as cutoff
from (select value
from t
order by value
limit N
) tlim
) tlim
on t.value >= tlim;
O podrías expresar esto un poco más simplemente como:
select *
from t join
(select value
from t
order by value
limit N
) tlim
on t.value = tlim.value;
Lo siguiente es conceptualmente lo que desea hacer, pero es posible que no funcione en MySQL:
select *
from t
where t.value >= ANY (select value from t order by value limit N)
Utilice la siguiente consulta SQL.
SELECT salary FROM salesperson
ORDER BY salary DESC
LIMIT 2,1
Deberías usar self join para esto.
- primero encuentre los (n) valores posibles superiores para una columna particular
- únelo con la misma tabla según el primario key
Por ejemplo, en la siguiente tabla de muestra
CREATE TABLE `employee` (
`ID` INT(11) AUTO_INCREMENT PRIMARY KEY,
`NAME` VARCHAR(50) NOT NULL,
`SALARY` INT(11) NOT NULL ,
JOINING_DATE TIMESTAMP
) ENGINE=MYISAM
INSERT INTO employee (NAME,salary,joining_date) VALUES('JAMES',50000,'2010-02-02'),
('GARGI',60000,'2010-02-02'),('DAN',30000,'2010-02-02'),('JOHN',10000,'2010-02-02'),('MICHEL',70000,'2010-02-02'),
('STIEVE',50000,'2010-02-02'),('CALRK',20000,'2010-02-02'),('BINNY',50000,'2010-02-02'),('SMITH',40000,'2010-02-02'),
('ROBIN',60000,'2010-02-02'),('CRIS',80000,'2010-02-02');
Con la tabla de datos anterior configurada Consulta para encontrar empleados que tengan los 3 mejores salarios sería :
SELECT e1.* FROM
(SELECT DISTINCT salary FROM Employee ORDER BY salary DESC LIMIT 3 ) S1
JOIN employee e1
ON e1.salary = s1.salary
ORDER BY e1.salary DESC
PROPINA:-
Si necesita los 4 mejores, simplemente cambie LIMIT 3
a LIMIT 4
Nos puedes confirmar nuestra tarea mostrando un comentario o dejando una valoración te damos la bienvenida.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)