我需要从不同表中的两列中获取最大值。 例如,来自schoolorder和platterorder的最大郊区。 platterorder有clientnumbers链接到normalclient,schoolorder有客户端数据链接到学校。
我有这个:
SELECT MAX (NC.SUBURB) AS SUBURB
FROM normalClient NC
WHERE NC.CLIENTNO IN
(SELECT PO.CLIENTNO
FROM platterOrder PO
WHERE NC.CLIENTNO = PO.CLIENTNO)
GROUP BY NC.SUBURB
UNION
SELECT MAX (S.SUBURB) AS SCHOOLSUBURB
FROM school S
WHERE S.CLIENTNO IN
(SELECT S.CLIENTNO
FROM schoolOrder SO
WHERE S.CLIENTNO = SO.CLIENTNO)
GROUP BY S.SUBURB)
然而,从拼盘顺序获得最大值并将其与学校的最大值相结合。我需要的是两者的最大值。
=============================================== ==
抱歉让这个让人困惑!输出应该只有一行。 它应该是普通客户和学校客户的最大订单来自的郊区。订单按正常客户的拼盘顺序列出,以及学校客户的学校订单。所以它是两个没有直接关系的表的最大值。
希望能稍微清理一下!
答案 0 :(得分:4)
如果我正确理解您的问题,则您不需要使用GROUP BY
,因为您需要该字段的MAX
。我还更改了您的语法,使用JOIN
而不是IN
,但IN
的工作方式应该相同:
SELECT MAX (NC.SUBURB) AS SUBURB
FROM normalClient NC
JOIN platterOrder PO ON NC.ClientNo = PO.ClientNo
UNION
SELECT MAX (S.SUBURB) AS SCHOOLSUBURB
FROM school S
JOIN schoolOrder SO ON S.CLIENTNO = SO.CLIENTNO
在了解您的表格结构并查看示例数据时,我建议您从MAX
获取UNION
结果的最佳方法是使用subquery
。使用JOINs
可能有更好的方法,但很难从您的问题中推断出来:
SELECT MAX(Suburb)
FROM (
SELECT MAX (NC.SUBURB) AS SUBURB
FROM normalClient NC
JOIN platterOrder PO ON NC.ClientNo = PO.ClientNo
UNION
SELECT MAX (S.SUBURB)
FROM school S
JOIN schoolOrder SO ON S.CLIENTNO = SO.CLIENTNO
) T