例如,我想知道誰是某些人羣中最高的人。我用如何獲得SQL中的最大值?
SELECT name, height
FROM people
WHERE height = (SELECT MAX(height) FROM people)
但它看起來不太好。什麼是最好的方式來做到這一點?
例如,我想知道誰是某些人羣中最高的人。我用如何獲得SQL中的最大值?
SELECT name, height
FROM people
WHERE height = (SELECT MAX(height) FROM people)
但它看起來不太好。什麼是最好的方式來做到這一點?
如果使用SQL Server,然後
SELECT TOP 1 name, height
FROM people
ORDER BY height DESC
SQL Server不支持LIMIT
方法,所以在這裏你需要,如果你使用MySQL使用TOP
所以:
SELECT name, height
FROM people
ORDER BY height DESC LIMIT 1
或
如果您擔心超過1
SELECT name, height
FROM people
WHERE height = (SELECT TOP 1 height FROM people ORDER BY height DESC)
ORDER BY name
當然同樣的例子與MySQL和:
SELECT name, height
FROM people
WHERE height = (SELECT height FROM people ORDER BY height DESC LIMIT 1)
ORDER BY name
可以使用LIMIT
(MySQL的)或top
(MSSQL):
SELECT name, height FROM people ORDER BY height DESC LIMIT 1;
SELECT TOP 1 name, height FROM people ORDER BY height DESC;
這將讓1分的紀錄。
要獲得更多記錄,您的子查詢正常工作。如果你不喜歡子查詢,你可以使用這些查詢(MySQL的):
SELECT MAX(height) INTO @maxHeight FROM person ORDER BY height DESC LIMIT 1;
SELECT * FROM person WHERE height = @maxHeight;
這樣你就可以重新使用在其他查詢@maxHeight
(當前連接)。
假設你使用MySQL:
SELECT name, height
FROM people
ORDER BY ABS(height) DESC LIMIT 1
我兒子具有最高的高度,你可以使用一個子查詢相信這是你能做到的最好方式。 – Marco
您正在使用哪種RDBMS? – 2011-11-26 18:50:39
是否有一種與RDBMS無關的方式來執行此操作? – Yrogirg