【问题标题】:Mysql retriving the nth recordMysql检索第n条记录
【发布时间】:2013-11-23 03:27:21
【问题描述】:

假设我有一个名为 EMPLOYEE 的表,其中包含以下属性

(EMPLOYEE_ID、LAST_NAME、FIRST_NAME、MIDDLE_NAME、JOB_ID、MANAGER_ID、工资)

我可以吗 显示第N个最高工资绘图员工详细信息 请帮忙

【问题讨论】:

  • 这是关于first record with 'N-th' salary,还是all records with N-th salary
  • 假设salary列按降序包含值(6700,6400,6000,5400,3200,1200)。我想要包含salary 6000的详细信息,即第三高的薪水。

标签: mysql sql


【解决方案1】:

ORDER BYLIMIT 其中10n + 1

SELECT
    *
FROM
    employees
ORDER BY
    Salary DESC
LIMIT
    10, 1

(如果要第一条记录,请使用LIMIT 0, 1。第十条,请使用LIMIT 9, 1等)

【讨论】:

    【解决方案2】:

    try this

    put n > 1 to get corresponding results

    n=3 必须给你第二个highest salary

     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)
    

    【讨论】:

      【解决方案3】:

      测试表

      CREATE TABLE Test 
      (ID INT IDENTITY(1,1),
      Salary INT)
      
      INSERT INTO Test
      VALUES (100), (200), (300), (400), (500)
      
      SELECT * FROM Test
      

      查询

      SELECT TOP 1 Salary
      FROM 
          (SELECT TOP 3 Salary FROM Test ORDER BY Salary DESC)q
      ORDER BY Salary ASC
      

      在您的子查询 SELECT TOP Nth 中,其余部分保持不变,它将为您提供所需的结果

      【讨论】:

      • 你的问题中有 sql 标签,这段代码在 sql-server 中就像一个魅力,不确定 mysql 的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      相关资源
      最近更新 更多