2

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

2 Answers 2

2

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

Sign up to request clarification or add additional context in comments.

Comments

0

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.