我们有一个互动的美国地图,显示的状态等于您的要求。
我们的数据库存在问题,我们有两个表staaten
和economydata
。
我们的内部联接
SELECT staaten.staat_id, staat_name, economydata.INDUSTRY_ID, economydata.INDUSTRIE_UMSATZ_ANTEIL
FROM staaten, economydata
WHERE staaten.staat_id = economydata.staat_i;`
给我们这个输出:
staat_id staat_name INDUSTRY_ID INDUSTRIE_UMSATZ_ANTEIL
1 Alabama 3 1
1 Alabama 6 1
1 Alabama 10 3
1 Alabama 11 4
1 Alabama 12 18
1 Alabama 13 11
1 Alabama 25 7
1 Alabama 34 6
1 Alabama 35 7
1 Alabama 36 3
1 Alabama 45 2
1 Alabama 51 5
1 Alabama 56 11
1 Alabama 60 6
1 Alabama 64 1
1 Alabama 65 3
1 Alabama 69 1
1 Alabama 70 7
1 Alabama 75 0
1 Alabama 78 3
1 Alabama 81 3
1 Alabama 82 17
2 Alaska 3 2
2 Alaska 6 16
2 Alaska 10 2
2 Alaska 11 4
2 Alaska 12 3
2 Alaska 13 0
2 Alaska 25 3
2 Alaska 34 2
2 Alaska 35 4
2 Alaska 36 12
2 Alaska 45 3
2 Alaska 51 3
2 Alaska 56 9
2 Alaska 60 4
2 Alaska 64 1
2 Alaska 65 2
2 Alaska 69 0
2 Alaska 70 7
2 Alaska 75 1
2 Alaska 78 3
2 Alaska 81 2
2 Alaska 82 21
但我们每个Staate只需要一行,只包含economydata.INDUSTRIE_UMSATZ_ANTEIL
的最高INDUSTRY_ID
。
我们得到的最接近的是SELECT ... MAX(economydata.INDUSTRIE_UMSATZ_ANTEIL) FROM ... GROUP BY staaten.staat_name
,但我们失去了economydata.INDUSTRIE_UMSATZ_ANTEIL
和INDUSTRY_ID
之间的联系,它向我们显示了最高INDUSTRIE_UMSATZ_ANTEIL
但不是INDUSTRY_ID
}
答案 0 :(得分:2)
您可以通过staat_id
对max(INDUSTRIE_UMSATZ_ANTEIL)组的结果使用元组和in子句 SELECT
staaten.staat_id
, staat_name
, economydata.INDUSTRY_ID
, economydata.INDUSTRIE_UMSATZ_ANTEIL
FROM staaten
INNER JOIN economydata on staaten.staat_id = economydata.staat_i
where (staaten.staat_id, economydata.INDUSTRIE_UMSATZ_ANTEIL ) in (
SELECT
staaten.staat_id
, max(economydata.INDUSTRIE_UMSATZ_ANTEIL)
FROM staaten
INNER JOIN economydata on staaten.staat_id = economydata.staat_i
group by staaten.staat_id
)
我建议使用显式连接代替where子句......代码更清晰