SQL最適合數據集。我的建議是使用SELECT語句和MAX()函數獲取最大衛星集,然後將結果集與整個表結合起來。然後測試月亮是否等於最大以打印「是」或「否」。
這是一個使用MySQL的例子。我創建了一個包含列MoonPlanetOrbited,bodyName,moonMeanRadius的月亮表。下面的SQL選擇一個給定moonPlanetOrbited最大moonMeanRadius:
SELECT moonPlantedOrbited, MAX(moonMeanRadius) as maxMoonRadius
FROM Moons
GROUP BY moonPlanetOrbitede
現在,我們有maxMoonRadius的列表,連接的結果與整個表格,測試設置,如果moonMeanRadius等於maxMoonRadius:
SELECT m1.moonPlanetOrbited, m2.bodyName,
if(m1.moonMeanRadius = m2.maxMoonRadius, 'Yes', 'No') as Largest
FROM Moons m1
JOIN (
SELECT moonPlanetOrbited, MAX(moonMeanRadius) as maxMoonRadius
FROM Moons
GROUP BY moonPlanetOrbited
) m2
ON m1.moonPlanetOrbited = m2.moonPlanetOrbited;
的IF語法從MySQL 5.5: http://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html#function_if
使用下面的SQL測試:
CREATE TABLE Moons(
moonPlanetOrbited VARCHAR(255),
bodyName VARCHAR(255),
moonMeanRadius FLOAT
);
INSERT INTO Moons('a', 'b', 1.01);
INSERT INTO Moons('a', 'c', 1.02);
INSERT INTO Moons('a', 'd', 1.03);
INSERT INTO Moons('a', 'e', 1.04);
+-------------------+----------+---------+
| moonPlanetOrbited | bodyName | Largest |
+-------------------+----------+---------+
| a | b | No |
| a | c | No |
| a | d | No |
| a | e | Yes |
+-------------------+----------+---------+
4 rows in set (0.00 sec)
嗯,即時通訊仍然沒有得到它的工作。你能向我解釋你的代碼嗎? – Cody 2010-08-05 19:47:51