0

我有一个查询以下列格式返回数据:

id | name | number
 1   John    12545
 1   John    50496
 2   Mary    23443
 3   Mark    54
 3   Mark    5600
 3   Mark    50206

我想找出ids结果集中出现的不同数量。例如,对于上面的结果。我想获得值 3。

有没有办法添加一列,所以结果看起来像这样?

count | id | name | number
 3      1   John    12545
 3      1   John    50496
 3      2   Mary    23443
 3      3   Mark    54
 3      3   Mark    5600
 3      3   Mark    50206

我的查询是:

 SELECT * FROM (
    SELECT id FROM tableA
    WHERE xyz
 ) as t1
 JOIN tableB using (id)
4

4 回答 4

4
SELECT (SELECT COUNT(DISTINCT id) FROM tableName) totalCount,
       id,name,number
FROM tableName

或通过使用CROSS JOIN

SELECT x.totalCount,
       a.id, a.name, a.number
FROM tableName a, (SELECT COUNT(DISTINCT id) totalCount 
                   FROM tableName) x
于 2012-10-23T13:38:33.740 回答
0
SELECT COUNT(id) AS count , id, name, number 
FROM 
( 
    SELECT id 
    FROM tableA 
    WHERE xyz 
) as t1 
JOIN tableB using (id)
GROUP BY id, name, number 
于 2012-10-23T13:44:02.157 回答
0

你应该试试 :

SELECT id,name,number, (SELECT COUNT(DISTINCT name) FROM YourTableName) FROM YourTableName

祝你好运

于 2012-10-23T13:40:06.370 回答
0

SELECT COUNT(DISTINCT id)会比使用 column 更快name

SELECT (SELECT COUNT(DISTINCT id) FROM tableName) as 'count',
        id,name,number  
FROM tableName
于 2012-10-23T13:40:14.857 回答