-1

考虑下表作为对具有大约 1,00,000 条记录的多个表的复杂嵌套查询的输出,我将使用此查询作为子查询并将其命名为People我的主查询

    NAME    Age
    Dave    30
    Susan   32
    Susan   27
    Amy     22
    Amy     23
    Amy     20

我希望上表的输出为

    NAME    Count1   Age
    Dave    1        30
    Susan   2        32
    Susan   2        27
    Amy     3        22
    Amy     3        23
    Amy     3        20

通过我的查询SELECT Name, COUNT(Name) AS Count1 FROM People group by Name ,我得到的输出为:

    NAME    Count1
    Dave    3
    Susan   3
    Amy     3  

所以上面的查询必须修改......People是一个巨大的子查询,我不想在我的主 SQL 查询中多次使用它......

我是 SQL 新手,您的任何帮助都会非常有帮助...

4

2 回答 2

0

这应该这样做:

SELECT name,
   (SELECT count(*) FROM mytable t WHERE t.name = name) AS count1,
   age
FROM mytable
于 2013-01-19T06:57:07.227 回答
0

您可以像这样加入同一个表:

SELECT P.name, counts, age FROM People P
JOIN (SELECT Name, COUNT(NAME) AS COUNTS FROM People GROUP BY NAME) P1
ON P.Name = P1.Name;

看到这个 SQLFiddle

于 2013-01-19T07:27:27.763 回答