gpt4 book ai didi

mysql - SQL中IF语句中的WHERE条件

转载 作者:太空宇宙 更新时间:2023-11-03 10:50:09 26 4
gpt4 key购买 nike

我需要从包含 where 条件的 SQL 中获取结果。但如果满足某些条件,则执行某些条件。

我试过:

$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 然后执行 AND m.from_message_in != 2 AND m.to_message_in != 2 与 WHERE 条件。

怎么做?

最佳答案

你不能像那样使用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 注入(inject)攻击。请take a look here以获得对该主题的良好解释以及防止它的方法。

关于mysql - SQL中IF语句中的WHERE条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25926446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com