我是第一次在MySQL中测试IF语句而且我遇到了错误。
我首先尝试找出表中有多少行,然后根据计数是否小于或等于5,返回表中的所有行,如果不是,则返回LIMIT子句中使用的范围内的所有帖子。
我收到的错误如下;
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近'IF SELECT COUNT(*)FROM
Posts
< = 5那么SELECT * FROMPosts
ELSE SELECT * FR'在第1行
请你告诉我我哪里出错了?
最大
$query = mysql_query(
"IF SELECT COUNT(*) FROM `Posts` <= 5
THEN
SELECT * FROM `Posts`
ELSE
SELECT * FROM `Posts` LIMIT $from, $limit")
or die(mysql_error());
答案 0 :(得分:4)
你不需要这样做。 Mysql自动处理,只需使用
$query = "SELECT * FROM `Posts` LIMIT $from, $limit";
答案 1 :(得分:3)
IF .. THEN .. ELSE
syntax in MySQL仅适用于程序代码(存储的前缀,函数,触发器......),但不适用于SELECT
语句。
相反,控制流功能IF()
可以在SELECT
查询中使用更详细的CASE WHEN .. THEN .. END
。但是,当你真的想根据条件执行两个不同的查询时,这对你的情况没有帮助。
在您的特殊情况下,我不确定您是否需要这样做:当表格中只有五个或更少的帖子时,LIMIT 0,10
会给您这五个帖子而不会出错:
$sql = "SELECT * FROM Posts LIMIT $from, $limit";