代码之家  ›  专栏  ›  技术社区  ›  Poni

mysql仅当另一行中的字段等于

  •  1
  • Poni  · 技术社区  · 14 年前

    战术
    id、名称、服务器id

    t朋友
    你好,你好

    现在,我正在尝试以下查询:

    SELECT FR.id_lo AS id_friend
    FROM tFriends FR, tAccounts AC
    WHERE (FR.id_hi = 4 && AC.server_id != -1)
    

    确保他朋友的服务器id不同于“-1” !

    你知道吗?看起来像是AC.server\u id!=-1'WHERE子句中的约束不能提供预期的结果。

    3 回复  |  直到 14 年前
        1
  •  1
  •   Mark Byers    14 年前

    尝试连接account表两次:

    SELECT *
    FROM tAccounts a1
    JOIN tFriends f ON a1.id = f.id_lo
    JOIN tAccounts a2 ON a2.id = f.id_hi
    WHERE a1.id = 4 AND a2.server_id != -1
       OR a2.id = 4 AND a1.server_id != -1
    

    SELECT *
    FROM tAccounts a
    JOIN tFriends f ON a.id = f.id_lo
    WHERE f.id_hi = 4 AND a.server_id != -1
    UNION
    SELECT *
    FROM tAccounts a
    JOIN tFriends f ON a.id = f.id_hi
    WHERE f.id_lo = 4 AND a.server_id != -1
    
        2
  •  2
  •   a1ex07    14 年前

    你在哪里加入条件?应该是这样的:(我想朋友。身份证号码是朋友的帐户id)

    SELECT FR.id_lo AS id_friend
    FROM tFriends FR 
    INNER JOIN tAccounts AC ON (AC.id = FR.id_lo AND AC.server_id != -1)
    WHERE FR.id_hi = 4 ;
    
        3
  •  2
  •   Jeff Mattfield Jeff Mattfield    14 年前

    您需要连接这两个表;否则,您将得到一个笛卡尔积(将id\u hi=4的所有tFriends行与server\u id不为-1的所有tAccounts行组合在一起)。

    试试这个:

    SELECT FR.id_lo AS id_friend
    FROM tFriends FR
    INNER JOIN tAccounts AC ON AC.id = FR.id_hi
    WHERE (FR.id_hi = 4 && AC.server_id != -1)