【问题标题】:MySQL multiple Inner Join with Where clauseMySQL 多重内连接 with Where 子句
【发布时间】:2014-01-29 15:34:02
【问题描述】:

我对 mysql 有一点问题。查询如下:

SELECT u.user_id,u.gender, ua.age,u.name,u.isonline,dot.profile_image_no FROM user_table AS u
INNER JOIN user_answers_table AS ua ON u.user_id = ua.user_id
INNER JOIN data_one_table AS dot ON dot.user_id = u.user_id
INNER JOIN user_detail_table AS udt ON udt.user_id = u.user_id
WHERE u.isregistrationcomplete='1' AND u.isactive='1' AND u.gender = '0' AND ua.age >= '20' AND ua.age <= '24' AND udt.lookingfor = '1' OR udt.lookingfor = '3';

我只想获得 u.gender = '0' 用户,但该查询返回给我 u.gender = '1' 那么问题出在哪里?

查询结果:

user_id  gender     age  name         isonline  profile_image_no  
-------  ------  ------  -----------  --------  ------------------
    62       0      29  Wqasaasd            1                   1
    93       1      28  Sadasda             1                   1
    131       0      26  Wedsas              1                   1
    155       0      91  Wwsfwdf             1                   1
    173       0      23  Yirmi30             1                   1
    220       0      20  Fjalekalimi         1                   1
    232       0      20  Seeemani            1                   1
    236       0      21  Mesut               1                   1
    238       0      89  23wdsca             1                   1
    247       0      23  11eqwe              1                   1
    252       0      24  Workhard            1                   1
    253       0      25  Sdsdg               1                   1
    343       1      25  Emily               1                   1

【问题讨论】:

    标签: mysql sql relational-database


    【解决方案1】:

    将您的OR 放入括号中,然后重试!

    SELECT u.user_id,u.gender, ua.age,u.name,u.isonline,dot.profile_image_no FROM user_table AS u
    INNER JOIN user_answers_table AS ua ON u.user_id = ua.user_id
    INNER JOIN data_one_table AS dot ON dot.user_id = u.user_id
    INNER JOIN user_detail_table AS udt ON udt.user_id = u.user_id
    WHERE u.isregistrationcomplete='1' 
    AND u.isactive='1' 
    AND u.gender = '0' 
    AND ua.age >= '20' 
    AND ua.age <= '24' 
    AND (udt.lookingfor = '1' OR udt.lookingfor = '3');
    

    【讨论】:

      【解决方案2】:

      错误的逻辑语法:

      AND (udt.lookingfor = '1' OR udt.lookingfor = '3');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-02
        • 2010-11-16
        • 1970-01-01
        • 1970-01-01
        • 2021-02-15
        • 1970-01-01
        • 1970-01-01
        • 2012-09-04
        相关资源
        最近更新 更多