-2

正如标题所说..我在这个查询中找不到错误,但它仍然无法正常工作

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(select table_name from information_schema.tables))' 附近使用正确的语法

这也不起作用

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)
4

2 回答 2

1

之后的所有limit 1内容(包括逗号)都是非法语法。

于 2013-06-22T17:27:14.887 回答
0

MySQL 要求LIMIT子句的参数是整数常量,而不是表达式。如果要计算它们,则必须使用准备好的语句或动态 SQL。文档中的一个示例是:

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;
于 2013-06-22T17:28:11.540 回答