我对此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运算符?
答案 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
将它们组合在一起。