我试图从另一个查询中的选择查询中选择行数。这是我所拥有的:
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
包含该行的groupcommits
在groupId
中的行数。我怎样才能做到这一点?谢谢,
-
最佳答案
您可以使用相关子查询来做到这一点:
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;
您在子查询中使用的额外嵌套级别是多余的。