mysql中的IF条件

时间:2012-02-16 05:55:28

标签: mysql

我有一个联系人表我希望在某个条件存在时查询。我尝试了下面的查询但是出现语法错误。

SELECT * 
FROM   contact_details 
WHERE  contactDeleted` =0 
AND    IF ( contactVisibility = "private"
           ,  SELECT * FROM contact_details
              WHERE    contactUserId = 1 
           , IF( contactVisibility = "group"
                ,  SELECT * FROM contact_details  
                   WHERE contactGroup = 3 
               ) 
          )

2 个答案:

答案 0 :(得分:1)

如果我正确理解你的问题(由于缺乏你提供的信息很困难。样本数据集和预期结果通常很有帮助),那么我认为你根本不需要IF 。以下将返回未删除且具有(visibility =“private”和userId = 1)OR(visibility =“group”和group = 3)的联系人

SELECT * 
FROM contact_details 
WHERE contactDeleted = 0 
    AND ( 
        (contactVisibility = "public") 
        OR
        (contactVisibility = "private" AND contactUserId = 1) 
        OR 
        (contactVisibility = "group" AND contactGroup = 3)
    )

答案 1 :(得分:0)

我假设您要使用IF()函数而不是存储函数的语句。

有关详细信息,请参阅this link

请注意,您已在其中放置了2个select语句,其中应该是自定义返回值。所以你现在注意到SELECT *...已经注意到在你的上层sql语句中你有一个AND..所以你基本上写AND SELECT *.. 会给你语法错误。

尝试使用.. AND x IN (SELECT *) ..查找x是否在返回值中。

我还要列出this link,以便使用现有且写得很好的答案,这些答案也可能适用于您的问题。