[英]execute sql query in php doesn't work ,but the query work in phpmyadmin
[英]SQL Query with Limit doesn't work in phpmyadmin
我将此 sql 代码放在 PHPMYADMIN 中以显示前 4 行,但它显示了我的表的所有 43 行。 我不知道为什么。 请帮忙 !
这是查询:
SELECT * FROM `myTable`
natural JOIN `column1`
natural JOIN `column2`
WHERE `mytable`.`something` = 1
ORDER BY mytable_date DESC LIMIT 0,4
提前谢谢了
我认为这可能是因为 phpMyAdmin 修改了 SELECT 语句,添加了它自己的 LIMIT 子句:出于某种原因,它可能会用自己的 LIMIT 替换你的 LIMIT。
phpMyAdmin 插入一个 LIMIT 是因为默认情况下,当您在 GUI 中查看它时,它会对 SELECT 的结果进行分页,它不会立即显示大表的所有行(您可以单击一个复选框来执行此操作,一旦初始第一页结果显示)。
不过,它并不总是很聪明:我刚刚遇到了一个相关的困难,它将 LIMIT 子句插入到带有 FOR UPDATE 的子查询中,这是 MariaDB 不允许的……它给了我一个错误。
因此,您在使用 phpMyAdmin 时必须记住,它将 LIMIT 子句添加到您的 SQL,它不会按原样发送到数据库。
我认为可能有一个选项可以关闭这种行为,但 OTOH 我不知道那在哪里。 (如果有人知道,请在评论中指出!)
您可以为此使用 LIMIT 和 OFFSET。 在您的情况下,您只需要 LIMIT,因为您从 0 开始。
SELECT * FROM `myTable`
natural JOIN `column1`
natural JOIN `column2`
WHERE `mytable`.`something` = 1
ORDER BY mytable_date DESC LIMIT 4 OFFSET 0;
或更简单的
ORDER BY mytable_date DESC LIMIT 4;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.