问题
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