2012-11-14 38 views
0

我試圖通過一些其他帖子的表達式錯誤來了解關於組的不是一個組,但它們都提到了組函數,例如MAX,MIN等。我沒有使用任何它是一個非常簡單的查詢返回這種錯誤。真的很簡單SQL不是一個GROUP BY表達式 - Oracle

SELECT * 
FROM ad_voarnet_atendimento_pista 
WHERE is_closed = 0 
GROUP BY prefixo 
ORDER BY prefixo 

我在做什麼錯在這裏?

編輯:

預期的結果是相同的是,MySQL會給我這個查詢。它會排除PREFIXO列的每個重複值。我只需要提到的列中每個值的1條記錄。 該錯誤消息是這樣的:

[Err] ORA-00979: not a GROUP BY expression 
+0

你會得到什麼確切的錯誤信息? – Aaron

+0

你想做什麼?什麼是預期的輸出? –

+0

我試圖得到MySQL會給我這個SQL。它會排除PREFIXO列的每個可重複值。 –

回答

3

GROUP BY不像MIN() MAX() SUM() COUNT()聚合函數的上下文中有用的外,也許除了刪除重複的行。只要刪除它。如果您正在尋找重複數據刪除結果,請改用DISTINCT。如果您使用DISTINCT,除非您更具體地瞭解SELECT列表中的列(不包括主鍵列),否則它的價值不會很高。

SELECT 
    DISTINCT * 
FROM 
    AD_VOARNET_ATENDIMENTO_PISTA 
WHERE IS_CLOSED = 0 
ORDER BY PREFIXO 

GROUP BY有時與ORDER BY困惑。你已經有ORDER BY PREFIX0,

+1

'DISTINCT *'是非常沒用的,因爲它將包含主鍵列,因此 - 根據定義 - 結果中不會有重複項。 –

+0

* DISTINCT *子句不會使每個重複的行都被排除?我想要的是與MySQL相同的GROUP BY會給我:如果結果已經有這樣的值,它將被忽略,但僅限於我提到的字段。 –

+1

@MarcoAurélioDeleuMySQL有一個非常不同的「GROUP BY」默認行爲,它不存在於其他RDBMS中。 MySQL允許你在'SELECT'中包含一些列,這些列在'GROUP BY'中也不存在,有時不確定的結果,但這在其他RDBMS中是不可能的。你的輸入數據是什麼,你想要什麼結果? –

相關問題