如何在SQL查询中使用动态限制

时间:2019-06-21 11:54:27

标签: mysql

我有一个查询SELECT * FROM grades WHERE userid = 4123;

我想限制此查询

我有一个查询SELECT * FROM grades WHERE userid = 4123 LIMIT(2);

这很好用,但是如果我希望该限制在其他查询中是动态的。

SELECT COUNT(id) FROM count_table WHERE course = 131;

这样做会给我带来语法错误

SELECT * FROM grades WHERE userid = 4123 LIMIT (SELECT COUNT(id) FROM count_table WHERE course = 131);

如果这根本不可能,那么还有其他方法可以实现吗?

请帮助。!

1 个答案:

答案 0 :(得分:0)

您可以使用ROW_NUMBER()函数在MySQL 8.x中完成此操作。

假设您按某一列对行进行排序(我猜想列ID ...根据需要进行更改),您可以这样做:

select
  g.*
from (
  select
    *,
    row_number() over(order by id) as rn -- change ordering as needed
  from grades
  ) g
join (
  SELECT COUNT(id) as cnt FROM count_table WHERE course = 131
) c on g.rn <= c.cnt