微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – MySQL中的SQL语句问题

我正在运行一个sql语句:

$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";

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐