當我試圖將兩個子查詢連接在一起時,第一個查詢中的值改變了。任何想法爲什麼?謝謝!使用oracle時加入兩個子查詢一起改變了第一個查詢的內容
這裏是代碼:
SELECT *
FROM ((
SELECT HOME, VISITOR, COUNT("result") AS HGOALS
FROM(
SELECT HOME, VISITOR, "result"
FROM ENGLAND
WHERE TIER = 1 AND "SEASON" >= 1980 AND "result" = 'H'
)
GROUP BY HOME, VISITOR
ORDER BY HGOALS DESC)
JOIN
(SELECT HOME, VISITOR, COUNT("result") AS AGOALS
FROM(
SELECT HOME, VISITOR, "result"
FROM ENGLAND
WHERE TIER = 1 AND "SEASON" > 1980 AND "result" = 'A'
)
GROUP BY HOME, VISITOR) USING (VISITOR, HOME))
ORDER BY AGOALS DESC;
輸出的部分是
Manchester United Aston Villa 5 18
Arsenal West Ham United 5 17
Arsenal Aston Villa 6 17
Manchester United Everton 12 16
Liverpool Aston Villa 8 16
但是當我僅執行JOIN的第一部分,這是
SELECT HOME, VISITOR, COUNT("result") AS HGOALS
FROM(
SELECT HOME, VISITOR, "result"
FROM ENGLAND
WHERE TIER = 1 AND "SEASON" >= 1980 AND "result" = 'H'
)
GROUP BY HOME, VISITOR
ORDER BY HGOALS DESC
部分的結果是:
Manchester United Tottenham Hotspur 27
Arsenal Everton 26
Manchester United Aston Villa 26
Liverpool Tottenham Hotspur 25
Manchester United West Ham United 24
注意,對於
Manchester United Aston Villa 5 18
Manchester United Aston Villa 26
結果我應該得到的是26,但它改爲5時,我加入兩個子查詢在一起。 爲什麼?
謝謝Ella Guan。我沒有看到爲什麼第一個子查詢中的count可以通過加入第二個來改變,因爲每個count都在join之前執行內聯。如果可能的話,你可以發佈支持數據(曼聯在主場vs阿斯頓維拉)?你也可以運行下面的變體查詢,讓我知道這場比賽的結果? (選擇主頁,訪問者,計數(DECODE(結果,'H',結果,NULL))作爲HOGOALS,COUNT(DECODE(結果,'A',結果,NULL))作爲英格蘭的地址,等級= 1和季節> = 1980年的GROUP BY VISITOR,HOME;'爲什麼> = 1980爲'H',但> 1980爲'A'? – alexgibbs
抱歉,備份數據太長而無法放入評論框。基本上,曼徹斯特有26次擊敗阿斯頓維拉成爲主隊。我運行這個:SELECT HOME,VISITOR,COUNT(DECODE(「result」,'H','result',NULL))HGOALS,COUNT(DECODE(「result」,'A','result',NULL) )作爲來自英格蘭的地區,其中等級= 1和季節> = 1980和HOME ='曼聯'和遊客='阿斯頓維拉'GROUP BY拜訪者,主頁;結果是:曼聯\t阿斯頓維拉 2.實際上我不知道爲什麼,但我只能得到與給定答案相匹配的結果,當我在1980年爲'A'不是> = 1980時。 –