MySQL中的IF语句,使用THEN和ELSE

时间:2012-03-24 21:00:09

标签: php mysql

我是第一次在MySQL中测试IF语句而且我遇到了错误。

我首先尝试找出表中有多少行,然后根据计数是否小于或等于5,返回表中的所有行,如果不是,则返回LIMIT子句中使用的范围内的所有帖子。

我收到的错误如下;

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'IF SELECT COUNT(*)FROM Posts< = 5那么SELECT * FROM Posts   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());

2 个答案:

答案 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";