2013-08-23 259 views
1

我想用GROUP BY執行多條select語句。執行多條select語句

我曾嘗試以下之一:

ResultSet rs=s.executeQuery("SELECT attr_name, count(*)" 
          + " FROM Table_name" 
          + " GROUP BY attr_name;" 
          + "SELECT attr_name, count(*)" 
          + " FROM Table_name" 
          + " GROUP BY attr_name"); 

,但它不來了。

+0

你是什麼意思*它不來*? –

+3

在查詢中有分號;我會想象你的查詢應該是一個聲明而不是兩個。 – Makoto

+0

您確實期望什麼?兩個查詢如何在單個結果集中表示?你想達到什麼目的?你想重複同一行2次嗎?爲什麼在地球上?也許這就是你想要的:'ResultSet rs = s.executeQuery(「attr_name union select attr_name從table_name組中選擇attr_name,count(*),at_name從table_name組中的count(*)」);'' – ppeterka

回答

2

加入兩組結果的方式是使用UNION ALL

ResultSet rs=s.executeQuery(
    "select attr_name,count(*) from Table_name group by attr_name UNION ALL select attr_name,count(*) from Table_name group by attr_name" 
); 

要小心,以確保這些列是相同的:必須有相同的列數,他們必須是相同的類型。這也值得明確命名列以確保:SELECT attr_name, count(*) AS attr_count FROM...

0

您正在一個查詢中執行2條語句。 ResultSet rs是一個指針,也就是說它只是指向錶行,所以我們可以根據屬性名來獲取數據。
在這種情況下,它只是不知道在哪裏指出。

根據我的看法,一個簡單的解決方法是在兩個結果集上使用「連接」(如果可能的話),以便rs可以從相應的屬性名稱中獲取。
如果連接不可行,使用多個ResultSet會更好,更容易,並使用程序邏輯處理您的現場數據。