SQL中IF语句中的WHERE条件

时间:2014-09-19 04:35:18

标签: mysql sql

我需要从SQL中获取结果,其中包含where条件。但如果满足某些标准,某些条件会被执行。

我试过了:

$query  = "SELECT m.id, m.message_type, m.message_url, m.user_id, c.type
            FROM gps_conversation_chat m left join gps_conversation c on m.conversation_id=c.id
            WHERE  m.conversation_id = $conv_id 

            IF c.type=1 THEN
                AND m.from_message_in != 2 AND m.to_message_in != 2
            END IF;

            ORDER BY  m.id DESC LIMIT $start, $limit ";

以上返回错误,我需要处理IF条件,即:

如果c.type = 1,则使用WHERE条件执行 AND m.from_message_in!= 2 AND m.to_message_in!= 2

怎么做?

1 个答案:

答案 0 :(得分:4)

你不能那样使用if。但是你可以定义这样的条件:

SELECT m.id, m.message_type, m.message_url, m.user_id, c.type
FROM gps_conversation_chat m left join gps_conversation c on m.conversation_id=c.id
WHERE m.conversation_id = $conv_id 
  AND (
         (c.type = 1 AND m.from_message_in != 2 AND m.to_message_in != 2)
         OR c.type != 1
      )
ORDER BY m.id DESC 
LIMIT $start, $limit;

请注意,通过嵌套条件,您可以获得所需的结果。



还有一件事: 您的查询(编写方式)可能容易受到 SQL注入攻击 的攻击。请take a look here获取有关该主题的详细解释,以及预防该主题的方法。