2014-12-09 2 views
3

Вот мой SELECT запрос:MySQL - Выполнение COUNT (*) для текущей строки

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 

Что такое правильный способ выполнить COUNT (*) для текущей строки результирующего SELECT запроса?

+3

Подсчет текущего ряда ??? Это слишком запутанно. – Rahul

+1

Количество строк в каждой строке равно 1, если идентификатор уникален, утомляете ли вы дублировать идентификаторы? – Jay

+0

является идентификатором этой таблицы auto increment или уникальным или просто значением? – NULL

ответ

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 

тогда я получаю COUNT всех элементов в Table1 для всех строк.

Мне на самом деле нужен COUNT из всех элементов для выборочных строк.

Как у меня может быть значение col3, появляющееся более одного раза. Я действительно хочу подсчет всех элементов для каждого col3.

Таким образом, статья GROUP BY является решением.

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

К сожалению, я думаю, что я был не в состоянии объяснить мою проблему должным образом, так что спутать много людей .. очень плохой вопрос. Виноват.

Смежные вопросы