2014-12-09 54 views
3

这里是我的SELECT查询执行COUNT(*):MySQL的 - 当前行

SELECT col1, col3, col5, col8 
FROM Table1 

在我SELECT查询,我想执行COUNT(*)专门为当前行

我想是这样的,但不知道怎样才能得到这样的:

SELECT col1, col3, 
(
SELECT COUNT(*) 
FROM table1 WHERE col3 = col3 value for current row 
), 
col5, col8 
FROM Table1 

什么是为SELECT查询结果集的当前行执行COUNT(*)的正确方法?

+3

当前行的数量?这太混乱了。 – Rahul 2014-12-09 12:04:48

+1

如果id是唯一的,则每行的计数为1,您是否累了罚款重复ID? – Jay 2014-12-09 12:06:57

+0

是此表自动增量的唯一或唯一值? – NULL 2014-12-09 12:07:19

回答

1
SELECT col1, col3, 
(
    SELECT COUNT(*) 
    FROM table1 WHERE id = A.Id 
) Count, 
col5, col8 
FROM Table1 A 
2

试试这个:

set @num := 0; 
SELECT @num := @num+1 , col1, col3, col5, col8 FROM Table1 

或其他方式:

SET @num := (SELECT COUNT(*) FROM Table1) ; 
SELECT @num := @num -1 , col1, col3, col5, col8 
FROM Table1 
1

发现了它。

如果我写我的查询是这样的:

SELECT col1, col3, 
COUNT(*) AS count, 
col5, col8 
FROM Table1 

然后我得到表1中的所有项目的所有行的COUNT。

我其实想要选择行的所有项目的计数。

就像我可能有不止一次出现col3值一样。我实际上需要每个col3的所有项目的数量。

因此,GROUP BY子句是解决方案。

SELECT col1, col3, 
COUNT(*) AS Count, 
col5, col8 
FROM Table1 
GROUP BY col3 

对不起,我想我无法正确解释我的问题,所以很困惑很多人..一个非常糟糕的问题。我的错。