如何使用子查询来定义 Mysql SELECT LIMIT 偏移量?
Posted
技术标签:
【中文标题】如何使用子查询来定义 Mysql SELECT LIMIT 偏移量?【英文标题】:How to use subquery to define Mysql SELECT LIMIT offset? 【发布时间】:2011-11-18 11:31:30 【问题描述】:我一直在尝试“动态”定义查询的偏移量。
但是在执行这个查询时,我总是以 You have an error in your SQL syntax;
结束
当我用数字替换子查询时,它确实可以正常工作。具有这种形状的查询是否有问题?
SELECT LengthOfStay
FROM table1
LIMIT (SELECT CAST(COUNT(DISTINCT(LengthOfStay)) / 2 AS SIGNED) FROM table1 t1), 2;
附言。我投了它,所以我可以确保它是一个整数。
【问题讨论】:
避免痛苦,做两个查询配合,即使你成功了恕我直言,你的代码会更混乱。这只是我的看法:) 看起来像重复的How to make limit offset dynamic using only (My)SQL 【参考方案1】:您不能将子查询用作LIMIT
参数。限制参数应该是INTEGER
。您的子查询返回,嗯...基本上,一个表。
这个查询到底想达到什么目的?这个查询对我没有任何意义...
【讨论】:
【参考方案2】:正如@michal 指出的,答案在How to make limit offset dynamic using only (My)SQL
基本上,如果您不在存储过程或准备好的语句中,则无法这样做。
如果您有一个存储过程,只需将“内部”选择的值分配给一个变量,然后在实际语句中使用它。
如果您有准备好的语句,请使用“limit ?, ?”并设置调用中的值。
【讨论】:
以上是关于如何使用子查询来定义 Mysql SELECT LIMIT 偏移量?的主要内容,如果未能解决你的问题,请参考以下文章