我有一個名爲PlayerScore
包含玩家的名字和他們的平均成績表:查找與條件上相同的表值的組合在SQL服務器
Id Name Average
1 Sakib 80
2 Tamim 70
3 Mushfiq 60
4 Sabbir 50
5 Ashraful 20
6 Aftab 40
7 Rubel 30
8 Kalu 10
我想基於一個條件,找到自己的合作伙伴關係的組合, , 在線播放其平均分值大於40不能與球員,其分值低於40 我嘗試下面的查詢合作伙伴:
select a.Name,a.Average,b.Name,b.Average from ((select * from PlayerScore where Average<=40) as a inner join (select * from PlayerScore where Average<=40) as b on a.Id < b.Id)
union
select a.Name,a.Average,b.Name,b.Average from ((select * from PlayerScore where Average>=40) as a inner join (select * from PlayerScore where Average>=40) as b on a.Id < b.Id)
導致:
Name Average Name Average
Aftab 40 Kalu 10
Aftab 40 Rubel 30
Ashraful 20 Aftab 40
Ashraful 20 Kalu 10
Ashraful 20 Rubel 30
Mushfiq 60 Aftab 40
Mushfiq 60 Sabbir 50
Rubel 30 Kalu 10
Sabbir 50 Aftab 40
Sakib 80 Aftab 40
Sakib 80 Mushfiq 60
Sakib 80 Sabbir 50
Sakib 80 Tamim 70
Tamim 70 Aftab 40
Tamim 70 Mushfiq 60
Tamim 70 Sabbir 50
是他們不使用UNION
所以結果是想要的? _「40不能與分數低於40的球員搭檔」_爲什麼選擇這種組合? –
結果是期望的。但我想要一種不使用'union'的方法@Tim Schmelter – sajju217
爲什麼你想避免'UNION'?如果你不想消除重複使用'UNION ALL',除了我沒有看到問題。如果你想要不同的排序,你可以在子查詢中做到這一點。 –