Select

獲取一列中最大的行

  • June 20, 2016

任務:煎餅中什麼成分的含量最多?

表格:

配方(名稱,組)

成分(名稱,價格)

成分(名稱,名稱,數量)

我試過這個查詢:

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');

引用自:https://dba.stackexchange.com/questions/141667