gpt4 book ai didi

mysql - SQL查询问题

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:27 25 4
gpt4 key购买 nike

SELECT *FROM `friends` AS FriendWHERE (  (    (      Friend.user_id =1618      AND Friend.profile_id =290    )    OR (      Friend.to_user_id =1618      AND Friend.to_profile_id =290    )  )  AND (    (      Friend.user_id !=1817      AND Friend.profile_id !=393    )    OR (      Friend.to_user_id !=1817      AND Friend.to_profile_id !=393    )  ))

我想要那些有 ((user_id = 1618 and profile_id = 290) OR (to_user_id = 1618 and to_profile_id = 290)) 但我不包括那些有 ((user_id = 1817 and profile_id =第393话

上面没有给出我想要的输出。

请帮我写同样的查询。提前致谢。

最佳答案

您的条件 (1817,393) 的“不”部分可能是您的问题所在。

(user_id != 1817 AND profile_id !=393) OR (to_user_id != 1817 AND to_profile_id !=393)

例如;如果 user_id 和 profile_id 不匹配 (1817,393),则 OR 意味着 to_ 部分永远不需要检查。 OR 的左侧检查正常,右侧发生的情况无关紧要。

您可以按如下方式进行改革(假设我理解正确)...

NOT ((user_id=1817 AND profile_id=393) OR (to_user_id=1817 AND to_profile_id=393))

有些人(比如我)一直试图插入操作以避免使用 NOT 并保存那微小的处理过程。相信我,这不值得:)

SELECT *
FROM `friends` AS Friend
WHERE
(
(Friend.user_id = 1618 AND Friend.profile_id = 290)
OR
(Friend.to_user_id = 1618 AND Friend.to_profile_id = 290)
)
AND
NOT
(
(Friend.user_id = 1817 AND Friend.profile_id = 393)
OR
(Friend.to_user_id = 1817 AND Friend.to_profile_id = 393)
)
)

关于mysql - SQL查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6250508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com