How to use subquery to define Mysql SELECT LIMIT o

2019-07-31 08:07发布

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.

2条回答
【Aperson】
2楼-- · 2019-07-31 08:28

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.

查看更多
老娘就宠你
3楼-- · 2019-07-31 08:32

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...

查看更多
登录 后发表回答