2017-06-20 34 views
-2
select title, Forename AS "Firstname", Surname AS "Lastname", COUNT 
(VISIT.Vet_Id) AS "Visits" 
from VISIT, VET 
where VISIT.Vet_Id = VET.Vet_Id 
group by title, Surname,VISIT.VET_Id 
order by title, Surname, VISIT.VET_Id; 

時當執行上面的代碼中的GROUP BY表達,收到錯誤信息:不是GROUP BY表達雖然它的工作原理,當我除去用名字AS「名字」Oracle錯誤消息:不添加另一個「選擇」子句

這是怎麼發生的?

+1

你試過搜索嗎?關於此主題有許多問題和解答 – Aleksej

+0

您必須將'Forename'添加到'group by'。如果指定了「group by」,則所有選定的屬性必須位於「group by」或「集合」中。 – HoneyBadger

回答

0

就包括在SELECTGROUP BY非聚集列:

select title, Forename AS "Firstname", Surname AS "Lastname", 
     COUNT(vi.Vet_Id) AS "Visits" 
from VISIT vi join 
    VET v 
    on vi.Vet_Id = v.Vet_Id 
group by title, Forename, Surname 
order by title, Forename, Surname; 

而且,FROM子句中從未使用逗號。 始終使用使用正確的,明確的JOIN語法。您還應該限定所有列參考。

0

如果是Oracle數據庫,我們必須在Select子句中採用的Group by子句中添加所有非聚合字段,否則會給出錯誤。在mysql的情況下,group by子句沒有這樣的限制。

+1

這不是一個「限制」。 MySQL將簡單地返回隨機結果(新版本也會大量拒絕這樣的查詢) –