在sql语句中使用局部变量的问题

p8ekf7hl  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(467)

我有一个sql语句:

SELECT DNI, puntaje, @row := @row+1 as Puesto
FROM postulante, (SELECT @row := 0) r
WHERE idCa = 2 
  AND idPer = 1 
  AND @row <= (SELECT vacantes 
                FROM carrera_abierta 
                WHERE idCa=2 AND idPer=1)
ORDER BY puntaje DESC ;

我想限制列值返回的行。但当我跑的时候:它不起作用:

当然,子查询的结果是一个很小的值:

怎么了?

gupuwyp2

gupuwyp21#

您需要使用子查询:

SELECT * 
FROM (SELECT DNI, puntaje, @row := @row+1 as Puesto
      FROM postulante, (SELECT @row := 0) r
      WHERE idCa = 2 
        AND idPer = 1 
      ORDER BY puntaje DESC) sub
WHERE Puesto <= (SELECT vacantes 
                FROM carrera_abierta 
                WHERE idCa=2 AND idPer=1)
ORDER BY Puesto;

相关问题