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

ero*_*msr 2 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
);
Run Code Online (Sandbox Code Playgroud)

这个查询的问题是这个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.
Run Code Online (Sandbox Code Playgroud)

SQL现在做的是它完全忽略了这一部分:

profile_id=52 AND user_id=68
Run Code Online (Sandbox Code Playgroud)

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

paq*_*mez 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
));
Run Code Online (Sandbox Code Playgroud)

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