我试图从另一个查询中的选择查询中选择行数。这是我所拥有的:

SELECT `userId`, `groupId` AS gId, (
    SELECT COUNT(*) FROM (
        SELECT * FROM `groupcommits` WHERE `groupId`=`groupcommits`.gId
    ) temp_table
) AS `numberOfCommitedUsers` FROM `groupcommits`
LEFT JOIN `groups` ON `groups`.`id`=`groupcommits`.`groupId`
LEFT JOIN `institutions` ON `institutions`.`id`=`groups`.`institutionId`
WHERE `groupcommits`.`userId`=userId;


目前无法正常使用,它会导致1064错误。我希望对于每行numberOfCommitedUsers包含该行的groupcommitsgroupId中的行数。我怎样才能做到这一点?

谢谢,

-

最佳答案

您可以使用相关子查询来做到这一点:

SELECT g2.`userId`, g2.`groupId` AS gId, (
       SELECT COUNT(*)
       FROM `groupcommits` AS g1
       WHERE g1.`groupId`= g2.`groupId`) AS `numberOfCommitedUsers`
FROM `groupcommits` AS g2
LEFT JOIN `groups` ON `groups`.`id`= g2.`groupId`
LEFT JOIN `institutions` ON `institutions`.`id`=`groups`.`institutionId`
WHERE g2.`userId`= userId;


您在子查询中使用的额外嵌套级别是多余的。

09-27 00:32
查看更多