Sql:模拟参数化 LIMIT

标签 sql mysql limit

我有一个表,其中包含不同事件的注册。该表有一些简单的列,如 ID、IDUSER、IDEVENT 和 DATE。每个事件都规定了可以参加的最大人数,因此表 EVENTS 有一个名为 PLACES 的列。

对于给定的事件,我想要获取的是该事件的第一个“PLACES”注册者的列表,即按时注册的人。其他人将被标记在等待名单上。

行为应该类似于“选择事件 X 的第一个注册地点”

我尝试使用 LIMIT PLACES 但它似乎不是有效的语法。

有什么提示吗?

最佳答案

有一个known bug在 MySQL 中有关使用 LIMIT 子句的变量。

那篇文章还介绍了 Kian Ryan 发布的解决方法:

DROP PROCEDURE IF EXISTS get_product_range $$
CREATE PROCEDURE get_product_range (
IN _START INTEGER,
IN _LIMIT INTEGER
)
BEGIN
PREPARE STMT FROM
" SELECT *
FROM products LIMIT ?,? ";
SET @START = _START;
SET @LIMIT = _LIMIT;
EXECUTE STMT USING @START, @LIMIT; /* Known bug in mySQL5 - exists as feature req. */
END $$

关于Sql:模拟参数化 LIMIT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3914243/

相关文章:

SQL 查询获取给定邮政编码 20 英里半径内的所有邮政编码(地址)

sql - 将 UNNEST 与 JOIN 结合使用

mysql - MySQL 是否两次计算相同的 SUM?

php - 使用中间表从另一个表获取信息

php - 如何在 apache2 服务器上执行 PHP 长时间脚本?

python - 使用 Python 处理 sql 时撇号 (') 有帮助

sql - PostgreSQL RETURNING 因 REGEXP_REPLACE 而失败

mysql - 主查询和子查询中的 DISTINCT 子句

size - 我可以在 protobuf 中为数字设置最大值吗?

mysql - 如何在MySQL中通过id限制查询