mysql - 在 MYSQL 查询中使用 If

标签 mysql subquery conditional-statements

您好,我目前正在编写一些代码,在从数据库中检索结果之前需要一个 if。

情况是,如果 interacterID 不为 NULL,则按它进行过滤,见下文

SELECT *
FROM status
WHERE type != "3"
AND userID = "'.$userID.'"
AND 
(
    interacterID IN ( #IF interacterID is null I want to skip this AND
        SELECT userID
        FROM userFriends
        WHERE (
            userFriends.userID = "'.$currentUserID.'"
            OR userFriends.interacterID = "'.$currentUserID.'"
        )
        AND status = "1"
    )
)
ORDER BY addedDate DESC
LIMIT 1

在此先感谢您的帮助。

最佳答案

如果我没看错,我不确定您是否需要此处的 IF ( which can be done )。一个简单的 IS NULL 和 OR 可以用于这两种情况:

SELECT *
FROM status
WHERE type != "3"
AND userID = "'.$userID.'"
AND 
(
    interacterID IS NULL OR interacterID IN (
        SELECT userID
        FROM userFriends
        WHERE (
            userFriends.userID = "'.$currentUserID.'"
            OR userFriends.interacterID = "'.$currentUserID.'"
        )
        AND status = "1"
    )
)
ORDER BY addedDate DESC
LIMIT 1    

关于mysql - 在 MYSQL 查询中使用 If,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13009709/

相关文章:

MYSQL select query based on another tables 条目

如果名称已存在但仅更新价格,则 MySQL 更新

Laravel 查询上的 Mysql 排序错误,与搜索参数相关

php - 如何使用eloquent根据表列和hasMany关系的计数返回记录

MySQL 错误 1349 我缺少什么?

mysql - 在多个子查询中使用查询结果

swift - 在 Firebase 中按指定子项过滤和排序

mysql - 锁如何在 MySQL 中用于两个插入?

javascript - 在 JavaScript 条件语句中使用 Razor 语法

c++ - 具有多个条件的 Switch-case