這裏是我的表:使用GROUPY BY來獲得它的最昂貴的產品的名稱和價格
CREATE TABLE Manufacturers (
Code integer PRIMARY KEY,
Name text
);
CREATE TABLE Products (
Code integer PRIMARY KEY,
Name text,
Price real,
Manufacturer integer REFERENCES Manufacturers (Code)
);
我想最昂貴的產品的名稱和價格一起選擇每個製造商的名稱。
我嘗試這Postgresql9.6
SELECT A.Name, A.Price, F.Name
FROM Products A INNER JOIN Manufacturers F
ON A.Manufacturer = F.Code
AND A.Price =
(
SELECT MAX(A.Price)
FROM Products A
WHERE A.Manufacturer = F.Code
);
它需要像永遠完成它。
那我試試這個:
SELECT Manufacturers.Name AS ManufacturersName, MAX(Price), Products.Name
FROM Products, Manufacturers
WHERE Products.Manufacturer = Manufacturers.Code
GROUP BY Manufacturers.Name;
我得到了錯誤:
ERROR: column "products.name" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: ...ufacturers.Name AS ManufacturersName, MAX(Price), Products.N...
我知道products.name不應該出現在它,但它是PostgreSQL的約束?
我需要products.name的結果,有人能指點我在正確的方向嗎?