在MYSQL查询中使用If

时间:2012-10-22 10:41:44

标签: mysql subquery conditional

您好我正在编写一些需要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

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

如果我正确读到这个,我不确定你需要一个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    

答案 1 :(得分:1)

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

如果interacterID为null,则代码将不会执行