他在tb1中选择语句,以防出现某些关联。否则,我喜欢这个答案。这在Mysql 5.7中不起作用,因为子查询中不允许限制。Mysql中没有TOP关键字。请参阅。子查询不支持mysqlso中的限制操作欢迎使用SO。谢谢你的回答。我想,通过在代码行前面添加4个空

他在tb1中选择语句,以防出现某些关联。否则,我喜欢这个答案。这在Mysql 5.7中不起作用,因为子查询中不允许限制。Mysql中没有TOP关键字。请参阅。子查询不支持mysqlso中的限制操作欢迎使用SO。谢谢你的回答。我想,通过在代码行前面添加4个空,mysql,Mysql,他在tb1中选择语句,以防出现某些关联。否则,我喜欢这个答案。这在Mysql 5.7中不起作用,因为子查询中不允许限制。Mysql中没有TOP关键字。请参阅。子查询不支持mysqlso中的限制操作欢迎使用SO。谢谢你的回答。我想,通过在代码行前面添加4个空格,它将被正确格式化为代码。让我给你一个提示:在代码旁边添加一些信息总是好的。谢谢。这是第n个最高工资的完美答案,并且这个查询返回所有相同工资的员工。有人能解释一下为什么这个答案被否决吗? SELECT DISTINCT(salary) AS


他在tb1中选择语句,以防出现某些关联。否则,我喜欢这个答案。这在Mysql 5.7中不起作用,因为子查询中不允许限制。Mysql中没有TOP关键字。请参阅。子查询不支持mysqlso中的限制操作欢迎使用SO。谢谢你的回答。我想,通过在代码行前面添加4个空格,它将被正确格式化为代码。让我给你一个提示:在代码旁边添加一些信息总是好的。谢谢。这是第n个最高工资的完美答案,并且这个查询返回所有相同工资的员工。有人能解释一下为什么这个答案被否决吗?
SELECT DISTINCT(salary) AS salary
FROM tbl_salary
ORDER BY salary DESC
LIMIT 1 OFFSET (n - 1);
SELECT * FROM
(SELECT @rank := @rank + 1 AS rank, salary
FROM   tbl,(SELECT @rank := 0) r 
order by salary desc ) m
WHERE rank=3
select MIN(sal) from salary where sal in 
 (select sal from salary order by sal desc limit 9)
 SELECT DISTINCT(Salary) FROM table ORDER BY Salary DESC LIMIT n,1
SELECT DISTINCT(column_name)
  FROM table_name 
  ORDER BY column_name DESC limit N-1,1;
SELECT DISTINCT(column_name)
 FROM table_name 
 ORDER BY column_name DESC limit 2,1;
SELECT * FROM Employee Emp1 
WHERE (N-1) = ( 
    SELECT COUNT(DISTINCT(Emp2.Salary)) 
    FROM  Employee Emp2 
    WHERE Emp2.Salary > Emp1.Salary)
SELECT DISTINCT(column name) FROM table ORDER BY (column name) desc LIMIT 4,1
SELECT DISTINCT(column name) FROM table ORDER BY (column name) desc LIMIT n-1,1
select * from salary where salary = 
(select distinct salary from salary order by salary desc limit 2,1)
SELECT * FROM employe e1 WHERE n-1 = ( SELECT COUNT(DISTINCT(e2.salary)) FROM employe e2 WHERE e2.salary > e1.salary) 

    Where n = highest number of salary like 1,2,3
SELECT DISTINCT Salary FROM tblemployee ORDER BY Salary DESC LIMIT 1 OFFSET (n-1)
SELECT DISTINCT Salary FROM tblemployee ORDER BY Salary DESC LIMIT 1 OFFSET 7
select MAX(Salary) from Employee;
SELECT MAX(Salary) FROM Employee
WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee);
select MAX(Salary) from Employee
WHERE Salary <> (select MAX(Salary) from Employee )
SELECT * /*This is the outer query part */
FROM Employee Emp1
WHERE (N-1) = ( /* Subquery starts here */
SELECT COUNT(DISTINCT(Emp2.Salary))
FROM Employee Emp2
WHERE Emp2.Salary > Emp1.Salary)
SELECT *
FROM Employee Emp1
WHERE (1) = (
SELECT COUNT(DISTINCT(Emp2.Salary))
FROM Employee Emp2
WHERE Emp2.Salary > Emp1.Salary)
SELECT TOP 1 Salary
FROM (
      SELECT DISTINCT TOP N Salary
      FROM Employee
      ORDER BY Salary DESC
      ) AS Emp
ORDER BY Salary
SELECT Salary FROM Employee 
ORDER BY Salary DESC LIMIT n-1,1
SELECT Salary FROM Employee 
ORDER BY Salary DESC OFFSET N-1 ROW(S) 
FETCH FIRST ROW ONLY
select * from (
  select Emp.*, 
row_number() over (order by Salary DESC) rownumb 
from Employee Emp
)
where rownumb = n;  /*n is nth highest salary*/
select * FROM (
select EmployeeID, Salary
,rank() over (order by Salary DESC) ranking
from Employee
)
WHERE ranking = N;
SELECT * FROM Employee Emp1
WHERE (N-1) = ( SELECT COUNT(*) FROM (
    SELECT DISTINCT(Emp2.Salary)
    FROM  Employee Emp2
    WHERE Emp2.Salary > Emp1.Salary LIMIT N))
SELECT * FROM Employee Emp1
WHERE (N-1) = (
    SELECT COUNT(DISTINCT(Emp2.Salary))
    FROM  Employee Emp2
    WHERE Emp2.Salary > Emp1.Salary LIMIT N)
SELECT 
    *
FROM
    (SELECT 
        *
    FROM
        table_name
    ORDER BY column_name ASC
    LIMIT N) AS tbl
ORDER BY column_name DESC
LIMIT 1;
SELECT 
    TOP 1 * from (SELECT TOP  nth_largest_no * FROM Products Order by price desc) ORDER BY price asc;
SELECT 
  TOP 1 *  from (SELECT TOP  5 * FROM Products Order by price desc) ORDER BY price asc;
SELECT  amount FROM  salary 
GROUP by amount
ORDER BY  amount DESC 
LIMIT n-1 , 1
SELECT DISTINCT amount
FROM  salary 
ORDER BY  amount DESC 
LIMIT n-1 , 1
SELECT   salary 
FROM     [employees] 
ORDER BY salary DESC 
offset   1 rows 
FETCH next 1 rows only
SELECT   salary 
FROM     [employees] 
ORDER BY salary DESC 
offset   **n-1** rows 
FETCH next 1 rows only
SET @cnt=0; 
SELECT s.* 
FROM   (SELECT ( @cnt := @cnt + 1 ) AS rank, 
               a.* 
        FROM   one AS a 
        ORDER  BY a.salary DESC) AS s 
WHERE  s.rank = '3'; 
set @cnt=0;
select s.* from (SELECT  (@cnt := @cnt + 1) AS rank,a.* FROM one as a  order by a.salary DESC) as s WHERE s.rank='3';
set @cnt=0;
select s.* from (SELECT  (@cnt := @cnt + 1) AS rank,a.* FROM one as a  order by a.salary DESC) as s WHERE s.rank='5';
select distinct(column_name) from table_name order by column_name desc limit (n-1),1;
select SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(DISTINCT salary ORDER BY salary DESC),',',3),',',-1) from employees
+----------+--------+--------+
| emp      | salary | deptno |
+----------+--------+--------+
| ep1      |     10 | dp1    |
| ep2      |     20 | dp2    |
| ep3      |     30 | dp2    |
| ep4      |     40 | dp1    |
| ep5      |     50 | dp1    |
| ep6      |     60 | dp3    |
| ep7      |     70 | dp3    |
+----------+--------+--------+
 select
      *
    from
      salaries as t1 
    where 
      t1.salary = (select 
                   salary
                 from 
                   salaries
                 where 
                 salaries.deptno = t1.deptno ORDER by salary desc limit 1 offset 1);
SET @prev_value = NULL;
SET @rank_count = 0;
select * from 
(SELECT
  s.*, 
  CASE 
      WHEN @prev_value = deptno THEN @rank_count := @rank_count + 1
      WHEN @prev_value := deptno THEN @rank_count := 1 
      ELSE @rank_count := 1 
  END as rank
FROM salaries s
ORDER BY deptno, salary desc) as t
having t.rank = 2;
+----+--------+
| Id | Salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE limitv INT;
    SET limitv = N - 1;
  RETURN (
      Select IFNULL(
        (select Distinct Salary from Employee order by Salary Desc limit limitv, 1),
         NULL
      ) as getNthHighestSalary
  );
END
+-------+--------+
|  name | salary |
+-------+--------+
|   A   | 100    |
|   B   | 200    |
|   C   | 300    |
|   D   | 400    |
|   E   | 500    |
|   F   | 500    |
|   G   | 600    |
+-------+--------+
SELECT DISTINCT salary FROM emp ORDER BY salary DESC LIMIT 1 OFFSET N-1;
SELECT * FROM emp WHERE salary = (
   SELECT DISTINCT salary FROM emp ORDER BY salary DESC LIMIT 1 OFFSET N-1
);