【问题标题】:Having problems selecting items from mySQL database从 mySQL 数据库中选择项目时遇到问题
【发布时间】:2017-03-30 14:41:15
【问题描述】:

表格:

User:
ID
gender
looking_for_gender

User_Status:
User_ID1
User_ID2
Status

虽然此选择有效,但我还想选择没有状态的用户。换句话说,我想选择没有状态或!= FRIENDS 的每个人。不知何故,AND & OR 并不能解决问题。

当前工作查询:

SELECT u.* FROM User u
JOIN User_Status us ON u.ID = us.User_ID1
WHERE us.Status != "FRIENDS"
AND us.User_ID2 =4 AND gender ="f"

示例数据用户状态:
User_ID1 ----- User_ID2 ----- 状态
---- 1 ---------------- 4 ------------ has_send_request
---- 2 ---------------- 4 ------------ 朋友
---- 3 ---------------- 4 ------------ 朋友

样本数据用户:
身份证
0
1
2
3
4
5

【问题讨论】:

    标签: mysql


    【解决方案1】:

    你必须用or添加条件“没有状态”

    WHERE (us.Status != "FRIENDS" or us.status is null) AND us.User_ID2 =4 AND gender ="f"
    

    澄清后更新:

    select u.* from user u left join user_status us on u.id = User_ID1 and us.User_ID2 =4  where gender ="f" and (us.Status != "FRIENDS" or us.status is null)
    

    【讨论】:

    • not seem to work 是什么意思?请提供更多详细信息
    • @VeraPerrone 和示例数据都很棒
    • @Jean 让我解释一下,我现在有 2 个状态,has_send_invite 和朋友。我想选择没有状态的所有人和没有朋友状态的所有人。现在我只得到状态为 has_send_invite 的人,而不是根本没有状态的人。
    • @VeraPerrone No Status 表示 User_status 中没有条目?
    • 是的,我添加了一些示例数据。在上面的示例中,选择了用户 1,但未选择用户 0 或 5
    【解决方案2】:

    您似乎正在寻找 NOT 子句:

    https://www.techonthenet.com/sql/not.php

    你可以做这样的事情:

     SELECT u.* FROM User u JOIN User_Status us ON u.ID = us.User_ID1 WHERE status IS NOT NULL
    

    【讨论】:

      【解决方案3】:

      当你评估 null 时,你需要使用 is null,否则它总是返回 false。

      SELECT u.*
      FROM User u
      INNER JOIN User_Status us
          ON u.ID = us.User_ID1
      WHERE (us.STATUS != "FRIENDS" OR us.STATUS IS NULL) 
          AND us.User_ID2 = 4
          AND gender = "f"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-02
        • 1970-01-01
        • 2014-08-04
        • 2022-11-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多