2014-01-16 26 views
0

我想要得到它在表格中存在的行數。爲了得到具有特定條件的行的數量

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

在上面的表中,我想得到輸出爲4(即)該行的計數存在。我有「d」價值,必須寫一個查詢來獲取輸出4 其中name = d

我想代碼將會像下面,

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

你提的問題是非常混亂,是沒有意義的。在上表中,如果name ='b',計數如何爲4? – Naveen

+0

你想要name = d還是name = b? – DhruvJoshi

+0

多數民衆贊成只有對不起 –

回答

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查詢將被

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' 
相關問題