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

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...