2017-08-01 38 views
0

我新的SQL,我一直在想,如果有一個有效的方式來獲得滿足一個條件,無論是在一個數據的數據的數量SQL命令。SQL:Access數據庫一次,並獲取數據的數據數量和

具體來說,我想要實現的是:

  1. 檢查是否存在於表中的任何記錄滿足用戶輸入的條件
  2. 如果是的話,顯示數據。否則,顯示「找不到數據」。

它就這麼簡單,但以我目前的SQL知識,我只能想到一種方法來實現這一點,它甚至需要2個SQL命令,我並不高興。我所想的是:

/*First, count the number of data satisfying the condition. 
    If this returns 0, show "No data found" */ 
SELECT COUNT(*) FROM Table WHERE Condition = "XXX" 

/*If the first SQL command returns 1 or greater, retrieve all data 
    and show them */ 
SELECT * FROM Table WHERE Condition = "XXX" 

然而,這兩個SQL命令幾乎相同,唯一的區別是,有COUNT()爲第一位的,這兩次訪問表。 這能簡化任何進一步的,所以我可以實現我想要實現與可能的一個SQL命令是什麼?或者有沒有其他方法可以更高效地實現這一目標?謝謝。

編輯: 謝謝大家。爲了您的信息,我正在編寫一個訪問數據庫的C#程序。我已經使用COUNT(*)的地方,我是能夠通過檢索數據計數:

string str = "SELECT COUNT(*) FROM Table WHERE condition = 'XXX'"; 
com = new OleDbCommand(str, connection); 
int count = (int)com.ExecuteScalar(); 
return count; 

但如果一個SQL命令返回兩個計數和數據,我怎麼能檢索數據到一個變量?

+0

您正在使用的數據庫? –

+0

使用分頁時,這可能是必需的。 –

+0

@TimBiegeleisen我正在使用SQL Server – JessicaD

回答

1

如果你想要得到的計數爲它選擇給予一定條件的所有列相同的查詢,那麼你可以考慮使用COUNT()作爲一個分析函數應用於整個表格。

SELECT t.*, 
    COUNT(*) OVER() cnt 
FROM Table t 
WHERE Condition = "XXX" 

Demo

0

SELECT COUNT(*),* FROM表WHERE條件=「XXX」

0

如果您正在運行使用遊標類客戶端的SQL,光標可以提供一個rowcount屬性標識受影響的行數。如果是這樣,那麼您可以簡單地運行SELECT * FROM Table WHERE Condition = 'XXX';並獲取從光標中選擇的數字或行。

0

我不明白你爲什麼會需要COUNT(*)可言,但也許還有更多尚未提供的要求是什麼?

如果SELECT *結果集爲空,則沒有記錄,您可以顯示一條消息,該效果。如果結果集不爲空,則可以處理並顯示數據。