2016-12-04 59 views
0

我有一個由兩個表組成的數據庫,名爲'朋友'和'數據'。 這裏是他們的樣子:如何按值在另一個表中排序值

朋友表:

+-----------------------------------+ 
| UUID (varchar) | FRIEND (varchar) | 
+-----------------------------------+ 
|  Alpha  |  Beta  | 
+-----------------------------------+ 
|  Zulu  |  Zara  | 
+-----------------------------------+ 
|  Gamma  |  Alpha  | 
+-----------------------------------+ 
|  Charlie |  Alpha  | 
+-----------------------------------+ 

數據表(不包含所有的朋友,但只有誰在網上是服務器上的):

+----------------+ 
| UUID | SERVER | 
+----------------+ 
| Alpha | lobby | 
+----------------+ 
| Gamma | lobby | 
+----------------+ 
| Charlie| lobby | 
+----------------+ 

所以,我如何得到這樣的ResultSet:

+----------------+ 
| FRIEND| SERVER | 
+----------------+ 
| Gamma | lobby | 
+----------------+ 
| Charlie| lobby | 
+----------------+ 
| Beta | (null)| 
+----------------+ 

所以基本上,這些都是「阿爾法」的朋友結合在一起的服務器。在服務器上的朋友應該放在第一位。它應該按服務器排序!

謝謝!

+0

請解釋確定結果集中的行的規則。 –

回答

1

訣竅是得到'Alpha'的朋友。你可以使用union all來做到這一點。其餘的只是一個join

select a.friend, s.server 
from ((select friend from friends where uuid = 'Alpha' 
    ) union all 
     (select uuid from friends where friend = 'Alpha' 
    ) 
    ) a left join 
    servers s 
    on a.friend = s.uuid 
order by (s.uuid is null) desc; 
+0

非常感謝你爲這個完美的工作答案:) – dv02

相關問題