带连接的mysql查询结果问题

时间:2014-08-30 05:30:57

标签: mysql

我的sql查询有问题。

为什么我的sql数据库查询显示两次记录? 我正在使用JOIN,而我正在使用此user表& user_inbox表。

$sql_alt = mysql_query(
"select i.*,u.images, u.firstname, u.lastname 
       from user_inbox i, user u 
       where i.to_id = '$user_id'");

1 个答案:

答案 0 :(得分:2)

在您的查询中,您正在执行CROSS JOIN并且您想要的内容可能是INNER JOIN

在MySQL中,CROSS JOIN的行为类似于JOININNER JOIN,而不使用任何条件。 对于您获得所有用户收件箱的每个用户,CROSS JOIN都会返回user的所有行乘以user_inbox的所有行。

您应该为JOIN声明指定条件。

 $sql_alt = mysql_query(
    "select i.*,u.images, u.firstname, u.lastname 
         from user_inbox i INNER JOIN user u ON i.to_id = u.user_id
         where i.to_id = '$user_id'");

同样好的习惯是主键和外键具有相同的名称,所以我认为你的user_id表中应该有user_id_toto_id而不是user_inbox 。这当然不是绝对必要的。