SQL语句WHERE子句与OR运算符有关

时间:2014-05-08 16:06:19

标签: sql

我对此SQL查询有疑问:

SELECT user_id, scrap_id, scrap_text, profile_id,  add_date
FROM scraps 
WHERE profile_id=52 AND user_id=68 OR user_id 
IN(
    SELECT user_id 
    FROM profilecontact
    WHERE owner_id=68 AND profile_id=52
);

此查询的问题在于OR运算符的这一部分。我需要SQL以下列方式思考:

profile_id=52 <- This one should always be followed
user_id=68 OR user_id IN... <- The result may have user_id 68 OR a user_id that the sub query finds.

SQL现在做了什么,它完全忽略了这一部分:

profile_id=52 AND user_id=68

如何以我需要的方式使用OR和AND运算符?

1 个答案:

答案 0 :(得分:7)

您只需要用括号组织标准。

试试这个:

SELECT user_id, scrap_id, scrap_text, profile_id,  add_date
FROM scraps 
WHERE profile_id=52 AND (user_id=68 OR user_id 
IN(
    SELECT user_id 
    FROM profilecontact
    WHERE owner_id=68 AND profile_id=52
));

这会将user_id条件视为单个元素,将profile_id视为另一个元素,AND将它们组合在一起。