2011-11-18 45 views
1

我一直在试图定义一个查询的“动态”偏移量。如何使用子查询来定义Mysql SELECT LIMIT偏移量?

但是执行这个查询我总是带着You have an error in your SQL syntax;

最终当我通过做一些它做工精细remplace子查询时。有这种形状的查询中是否有错误?

SELECT LengthOfStay 
FROM table1 
LIMIT (SELECT CAST(COUNT(DISTINCT(LengthOfStay))/2 AS SIGNED) FROM table1 t1), 2; 

Ps。我铸造它,所以我可以确保它是一个整数。

+0

避免痛苦,做两个查询交配,即使你成功恕我直言,你的代码将会更加混乱。这只是我的意见:) – BlackDivine

+2

看起来像重复[如何使极限偏移动态只使用(我的)SQL](http://stackoverflow.com/questions/5872667/how-to-make-limit-offset-dynamic-using - 只MySQL的) –

回答

2

您不能使用子查询作为LIMIT参数。限制参数应该是INTEGER。你的子查询返回,基本上,一个表。

无论如何,试图通过这个查询来实现什么?该查询没有任何意义,我...

0

由于@michal指出答案是How to make limit offset dynamic using only (My)SQL

基本上,如果你不是在存储过程或准备好的语句,你不能做到这一点。

如果你有一个存储过程,只需将一个变量赋值给你的“内部”选择并在真实语句中使用它。

如果您有准备好的语句,请使用“limit?,?”并设置来自呼叫的值。

相关问题