![](/img/trans.png)
[英]How to only show a subset of data in a table by using alter and select in mysql?
[英]How to select a subset using MySQL
一般來說,我正在嘗試學習最佳的MySQL實踐,在一個表中選擇一組記錄,其中的字段是另一個表中記錄的子集。 特別...
team_competition表存儲團隊注冊的競賽:
團體比賽
630 AGLOA2017ELCE
630 AGLOA2017ELEQ
630 AGLOA2017ELPREZ
630 AGLOA2017ELPROP
...
player_competition表存儲玩家注冊的比賽:
球員比賽
186 AGLOA2017SREQ
186 AGLOA2017SRLING
186 AGLOA2017SROS
186 AGLOA2017SRPREZ
186 AGLOA2017SRPROP
186 AGLOA2017SRWFF
191 AGLOA2017SREQ
191 AGLOA2017SRLING
191 AGLOA2017SROS
191 AGLOA2017SRPREZ
191 AGLOA2017SRPROP
191 AGLOA2017SRWFF
...
為了將球員分配到球隊,我需要選擇與相關球隊注冊相同比賽的球員。 對於該示例中的團隊630,我需要選擇至少注冊那四個比賽的球員:AGLOA2017ELCE,AGLOA2017ELEQ,AGLOA2017ELPREZ和AGLOA2017ELPROP。
在數學上,我認為這相當於選擇球員比賽的超級(包含)的球員比賽。 我目前正在使用一個中等復雜的例程來循環玩家和比賽,並將每個比較與球隊的比賽進行比較。 它有效,但似乎非常低效。
我正在研究如何使用MySQL來選擇“子集”,但我遇到了一個心理障礙。 當發生這種情況時,我通常可以通過寫下我的問題來取得一些進展。 只是鍵入這個給了我一些想法,但現在已經寫了......
...提前感謝您分享您可能擁有的任何解決方案。
我不確定這是一個MySQL最佳實踐,但你可以通過比較一個團隊的競爭計數和加入玩家的團隊數量來實現這個查詢。
Select Team, Player
From (
Select Team, Player, count(0) matching
From team_competition t
Inner join player_competition p on t.Competition = p.Competition
Group by Team, Player
) tp
Inner join (
Select Team, count(0) competitions
From team_competitions
Group by Team
) t on tp.Team = t.Team
Where tp.matching = t.competitions
(在手機上寫這個,原諒格式化)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.