Sql:模拟参数化的LIMIT

时间:2010-10-12 11:42:40

标签: sql mysql limit

我有一个SIGNUPS表到不同的事件。该表有一些简单的列,如ID,IDUSER,IDEVENT和DATE。每个事件的特点是我可以参加的人数最多,因此表EVENTS有一个名为let的说明PLACES。

我想要为特定事件获取的是该事件的第一个“PLACES”注册列表,即按时注册的人员。其他人将被列入候补名单。

行为应该是“选择第一个PLACES注册到事件X”

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

任何提示?

1 个答案:

答案 0 :(得分:1)

MySQL中有known bug关于使用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 $$

HTH