【问题标题】:Using If in MYSQL query在 MYSQL 查询中使用 If
【发布时间】:2012-10-12 03:52:04
【问题描述】:

您好,我目前正在编写一些代码,在从数据库中检索结果之前需要一个 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

提前感谢您的帮助。

【问题讨论】:

    标签: mysql subquery conditional


    【解决方案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,则代码不会执行

    【讨论】:

      【解决方案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    
      

      【讨论】:

      • 谢谢你,真不敢相信错过了,很棒的工作就像我现在需要的一样,谢谢你的帮助! 5 分钟后将接受您的回答。
      猜你喜欢
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      相关资源
      最近更新 更多