MYSQL查询左连接和分组依据

MYSQL查询左连接和分组依据,mysql,group-by,left-join,Mysql,Group By,Left Join,我有一个查询,它从一个表中提取,并在另一个表中留下连接。如果删除左连接,由于查询中的限制为10,它将返回10条记录。当我添加一个左联接时,它只返回一条在联接表中有匹配项的记录 如果存在匹配项,如何让它返回包含另一个表中的列的所有十条记录,但如果没有匹配项,则将该列留空 以下是查询的两个版本,一个没有连接,另一个有左连接: 版本1:返回10条记录: $sql = "SELECT d.first,d.last,d.descript,d.profilepic,d.userid,d.id FROM

我有一个查询,它从一个表中提取,并在另一个表中留下连接。如果删除左连接,由于查询中的限制为10,它将返回10条记录。当我添加一个左联接时,它只返回一条在联接表中有匹配项的记录

如果存在匹配项,如何让它返回包含另一个表中的列的所有十条记录,但如果没有匹配项,则将该列留空

以下是查询的两个版本,一个没有连接,另一个有左连接:

版本1:返回10条记录:

$sql = "SELECT d.first,d.last,d.descript,d.profilepic,d.userid,d.id   
FROM demo `d`";
$sql.=" LIMIT 10";
版本1:返回1条记录。在这10项记录中,只有一项在分数上匹配

$sql = "SELECT d.first,d.last,d.descript,d.profilepic,d.userid,d.id,SUM(p.points) AS points 
FROM demo `d` 
LEFT JOIN points `p` 
ON p.userid = d.userid";
$sql.=" LIMIT 10";

谢谢您的建议。

您需要添加分组依据

SELECT d.first,d.last,d.descript,d.profilepic,d.userid,d.id,SUM(p.points) AS points 
FROM demo `d` 
LEFT JOIN points `p` 
ON p.userid = d.userid
group by d.id

示例数据在这里非常有用。请在代码问题中给出一个示例。展示你能做的合理部分。您想要的内容与您可以编写的一些查询有什么关系?你的文字也不清楚。使用足够多的单词和参考资料部分的例子。不仅仅是其中的一些词。
groupbyd.id
很可能就足够了。@TimBiegeleisen是的,但仅仅因为它是mysql。对于其他数据库,它将提供error@JayJodiwal不是真的。最接近ANSI标准的Postgres还支持具有函数依赖关系的
groupby
。这里的问题不仅仅是完整的分组,它也是ANSI标准所支持的。@JayJodiwal读这篇文章的好时机::-)d.id分组有效。如果你想写一个答案,我会把它标为正确的。