How to use subquery to define Mysql SELECT LIMIT offset?

孤人 提交于 2019-12-11 14:12:04

问题


I have been trying to define "dynamically" the offset of a query.

But when executing this query I always end up with a You have an error in your SQL syntax;

When I do remplace the subquery by a number it does work fine. Is there something wrong in a query that has this shape?

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

Ps. I casted it so I can make sure it's an integer.


回答1:


You can not use a subquery as a LIMIT argument. Limit argument should be an INTEGER. Your subquery returns, well... basically, a table.

What are trying to achieve by this query anyway? This query does not make any sense to me...




回答2:


As @michal points out the answer is in How to make limit offset dynamic using only (My)SQL

Basically if you're not in a stored procedure or a prepared statement you can't do it.

If you have a stored procedure just assign a variable the value of your "inner" select and use that on the real statement.

If you have a prepared statement use "limit ?, ?" and set the values from the call.



来源:https://stackoverflow.com/questions/8181727/how-to-use-subquery-to-define-mysql-select-limit-offset

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!