我的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'");
答案 0 :(得分:2)
在您的查询中,您正在执行CROSS JOIN
并且您想要的内容可能是INNER JOIN
。
在MySQL中,CROSS JOIN
的行为类似于JOIN
和INNER 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_to
或to_id
而不是user_inbox
。这当然不是绝对必要的。