2014-01-16 2 views
0

Я хочу получить подсчет строки, которая существует в таблице.Чтобы получить счет строки с конкретным условием

+---+----+ 
|id |name| 
+---+----+ 
|100|a | 
+---+----+ 
|201|b | 
+---+----+ 
|302|c | 
+---+----+ 
|403|d | 
+---+----+ 
|504|e | 
+---+----+ 

В приведенной выше таблице я хочу получить выход как 4 (i.e), счетчик этой строки существует. У меня есть «d» значение и должны написать запрос, чтобы получить выход в 4 где имя = d

Я думаю, что код будет что-то вроде ниже,

select count(*) ...... 
+0

Ваш вопрос очень запутанным и не имеет никакого смысла. Как счет будет 4, если name = 'b' в приведенной выше таблице? – Naveen

+0

Вы хотите, чтобы имя = d или имя = b? – DhruvJoshi

+0

thats d only sorry –

ответ

0
SELECT ROW_NUMBER() OVER(ORDER BY id) FROM yourtable WHERE name='d' 

MySQL версии

SET @rank=0; 
SELECT @rank := @rank+1 AS rank 
FROM  yourtable WHERE name='d' 
ORDER BY id asc 
+0

Ошибка в его установке. «проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с (ORDER BY id)» –

+0

Это было предназначено только как ссылка. Исправлен запрос. – DhruvJoshi

+0

Итак, вы используете MySQL. Не уверен, что номер строки будет работать там. – DhruvJoshi

0

Чтобы получить номер строки

SELECT ROW_NUMBER() OVER(ORDER BY id) from table WHERE name='d' 

Чтобы подсчитать строки с использованием условия ниже запроса

select count(*) as count from table where name = 'b' 
+0

, где это имя таблицы в первом запросе? –

0

Если я правильно вас понимаю, этот вопрос, что вы хотите:

set @row_number = 0; 
select @row_number := @row_number + 1 as row_number,name FROM table_name; 
0

@vinoth Я думаю @Pragmatist Ответ будет работать для вас. Просто добавьте этот пункт в свой запрос:

set @row_number = 0; 
select @row_number := @row_number + 1 as row_number,name FROM table_name Where name='b'; 
0

Попробуйте нижеследующее. MS SQL - это проверенный запрос, я просто преобразован в mysql. Надеюсь, вы можете изменить согласно вашему требованию.

SET @rank=0; 
    SELECT * FROM Table1 T1 
    INNER JOIN(
      SELECT @rank := @rank+1 AS rank, ID 
      FROM  Table1 
      ORDER BY id asc) temp ON temp.ID = T1.ID 
    WHERE T1.name = 'd' 

MS SQL Query будет

SELECT * FROM Table1 T1 
INNER JOIN(SELECT id, ROW_NUMBER() OVER (Order by id) AS RowNumber from Table1) temp ON temp.ID = T1.ID 
WHERE T1.name = 'd' 
Смежные вопросы