正如标题所说..我在这个查询中找不到错误,但仍然无法正常工作
SELECT column_1, column_2, column_3
from `table_1`
WHERE `column_4` = '3'
order by id limit 1,(count(select table_name from information_schema.tables))
请帮忙
它给出了这个错误
语法错误或访问冲突:1064 SQL语法中出错;检查与MySQL服务器版本对应的手册,以便在第1行附近使用正确的语法(count(从table_schema.tables中选择table_name))
这也无效
SELECT column_1, column_2, column_3
from `table_1`
WHERE `column_4` = '3'
order by id limit 1,(select count(table_name) from information_schema.tables)
答案 0 :(得分:1)
limit 1
之后的所有内容(包括逗号)都是非法语法。
答案 1 :(得分:0)
MySQL要求LIMIT
子句的参数是整数常量,而不是表达式。如果要计算它们,则必须使用预准备语句或动态SQL。 documentation的一个例子是:
SET @skip=1; SET @numrows=5;
PREPARE STMT FROM 'SELECT * FROM tbl LIMIT ?, ?';
EXECUTE STMT USING @skip, @numrows;
因此,对于您的情况,您可以这样做:
SELECT COUNT(table_name) INTO @tables FROM information_schema.tables;
PREPARE STMT FROM 'SELECT column_1, column_2, column_3
from `table_1`
WHERE `column_4` = "3"
order by id limit 1, ?';
EXECUTE STMT USING @tables;