我正在运行一条 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 匹配)
问题是它显示了重复的记录。我该如何解决这个问题?
最佳答案
您应该将 JOIN 条件放在 ON 之后。像这样:
$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";
关于php - MySQL中SQL语句的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6311404/