Select
獲取一列中最大的行
任務:煎餅中什麼成分的含量最多?
表格:
配方(名稱,組)
成分(名稱,價格)
成分(名稱,名稱,數量)
我試過這個查詢:
Select Iname, Amount From Composition Where Name='Pancake' Ordered by Amount ASC
但它不會返回正確的結果。它出什麼問題了?
除了錯字
ORDER BY
之外,您需要按降序排列才能首先獲得最大量的成分。SELECT Iname, Amount FROM Composition WHERE Name = 'Pancake' ORDER BY Amount DESC FETCH FIRST 1 ROWS ONLY;
假設
Amount
被定義NOT NULL
。
FETCH FIRST 1 ROWS ONLY
是由 SQL 標准定義的語法,並被多個 RDBMS 支持,但不是全部。根據您未公開的 RDBMS,您可能需要不同的語法變體。這是一個非常完整的列表:https://en.wikipedia.org/wiki/Select_(SQL)#FETCH_FIRST_clause
這是您的查詢,您需要將成分 i與具有 2 條件的成分 c 連接起來。
on i.iname=c.iname``name='Pancake' and where amount >= select max(amount) from Composition where name='Pancake'
SELECT i.Iname, Amount FROM Ingredient i INNER JOIN Composition c ON i.iName=c.iName WHERE Name='Pancake' AND Amount >= (SELECT MAX(Amount) FROM Composition WHERE Name='Pancake');