2015-07-13 76 views
0

我想弄清楚如何将这两个SQL语句连接成一个。如果可能,我希望最终结果全部在一个查询中。两个选择多列语句

SELECT WHM_ilvl AS BestWHM_ilvl, username AS BestWHM_Name FROM roster ORDER BY WHM_ilvl DESC 
SELECT BLM_ilvl AS BestBLM_ilvl, username AS BestBLM_Name FROM roster ORDER BY BLM_ilvl DESC 

结果会是这样:

BestWHM_ilvl | BestWHM_ilvl | BestBLM_ilvl | BestBLM_ilvl 
107   | User1  | 121   | user2 
102   | User11  | 109   | user3 
80   | User3  | 101   | user52 
79   | User7  | 99   | user3 
78   | User4  | 80   | user1 

我有()将它们分开,并包括他们,如果他们是单列尝试,但它不工作。我试着寻找我想要的相同类型的查询,但从来没有找到任何东西。

我不介意在可用的情况下提及正确的知识。

我在PHP和MySQL中使用它。

问候,

+1

如果我理解正确的话,那么两对列在一行中并不相互对应。我建议保留这两个选择的结果作为单独的值,并在PHP中使用它们来创建一个表。这不会那么难。 – DangeMask

回答

0
SELECT 
    r1.WHM_ilvl AS BestWHM_ilvl 
, r1.username AS BestWHM_Name 
, r2.BLM_ilvl AS BestBLM_ilvl 
, r2.username AS BestBLM_Name 
FROM roster r1 
    JOIN roster r2 ON r1.id = r2.id 
ORDER BY r1.WHM_ilvl, r2.BLM_ilvl 
DESC 

这里有你所要求的给定的是在讨论中的查询的最简单形式。似乎有可能比这更多,如果更新,我会尝试回到这个。

编辑糟糕。纠正了我应该事先抓到的一些事情。

+0

这似乎不工作。它首先告诉我“rost”不存在,如果我将它改正为“roster”,它告诉我WHM_ilvl不明确。 另外,我不确定我是否理解这句话,谨慎解释?目标是获取每个用户及其得分的名称。在原始表中,“用户名”一栏只有一次,列“xxx_ilvl”也只有一次。我会重复这个每列以获得每个列的排名。 –