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

I am testing out IF statements in MySQL for the first time and I am coming across an error.

I am trying to firstly, find out how many rows are in the table, then depending on whether the count is less than or equal to five, return all of the rows in the table, or if it isn't, return all posts in the range used within the LIMIT clause.

The error I am receiving is as follows;

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF SELECT COUNT(*) FROM Posts <= 5 THEN SELECT * FROM Posts ELSE SELECT * FR' at line 1

Please can you tell me where I am going wrong?

Max.

$query = mysql_query(
    "IF SELECT COUNT(*) FROM `Posts` <= 5 
     THEN 
         SELECT * FROM `Posts` 
     ELSE 
         SELECT * FROM `Posts` LIMIT $from, $limit") 
     or die(mysql_error());

you don't need to do this. Mysql handles this automatically, just use

$query = "SELECT * FROM `Posts` LIMIT $from, $limit";

The IF .. THEN .. ELSE syntax in MySQL is only available for procedural code (stored precudures, functions, triggers..), but not for SELECT statements.

Instead, the control flow functions IF() and the more verbose CASE WHEN .. THEN .. END can be used in SELECT queries. But this is of no help in your case, when you actually want to execute two different queries depending on a condition.

In your special case i'm unsure if you even need to do that: when there are only five or less posts in the table, a LIMIT 0,10 will give you those five posts without error:

$sql =  "SELECT * FROM Posts LIMIT $from, $limit";