$sql = "SELECT pic, userid
FROM user_details
INNER JOIN wp_users ON user_details.userid
WHERE wp_users.id = user_details.userid
LIMIT $recordstart, $pagesize
";
该查询用于从user_details和wp_users中选择记录,但只应选择是否存在匹配(wp_users.id = user_details.userid).
目标是在从另一个表中检索记录(基于id匹配)时基本上从表中进行选择
解决方法:
你应该在ON之后放入你的JOIN条件.像这样:
$sql="select pic, userid
from user_details
inner join wp_users on (wp_users.id=user_details.userid)
limit $recordstart, $pagesize";
但真正的问题是,对于wp_users中的每个相应记录,你在user_details中有超过1条记录(反之亦然).
INNER JOIN导致数据库生成Cartesian product的user_details和wp_users记录.然后,结果表将按当前的WHERE条件(wp_users.id = user_details.userid)进行过滤.取决于您的需求,如果您只想检索唯一记录,可以使用GROUP BY或disTINCT.
例如,如果您需要userid是唯一的:
$sql="select pic, userid
from user_details
inner join wp_users on (wp_users.id=user_details.userid)
group by userid
limit $recordstart, $pagesize";