我有两张表格,代码如下:
表:帐户
id | username | email | registered
1 | player1 | 123@asd.ad| 2012-05-03
2 | goodman | 1345@bs.ad| 2012-06-03
3 | goodbat | asdh@asd.d| 2012-06-05
表格:字符
guid | account | name | rank
213 | 1 | fres | 2
214 | 2 | sdg2 | 3
215 | 1 | fgax | 4
216 | 3 | zFvx | 8
217 | 3 | zsvx | 2
...
我想只用一个查询来显示排名最高的帐户。
输出(显示排名最高的帐户)
username : player1 | 123@asd.ad | char: fgax(4)
username : goodman | 1345@bs.ad | char: sdg2(3)
username : goodbat | 134s@bs.ad | char: zFvx(8)
...
我的查询:
SELECT username,email,id FROM accounts
答案 0 :(得分:0)
SELECT a.username, a.email, a.id, c.name
FROM accounts a
JOIN chars c ON a.id = c.account
ORDER BY a.rank DESC
答案 1 :(得分:0)
试试这个::
SELECT
a.username as userName,
a.email as email,
a.id as id,
c.name as name
FROM accounts a
INNER JOIN chars c ON (a.id = c.accoun)t
ORDER BY a.rank DESC
答案 2 :(得分:0)
您需要的是表连接。表连接的作用是它们查询2个表,在您的情况下 Table1 和 table2 。这是查询,然后是解释。
SELECT `t1`.`username`, `t1`.`email`, `t2`.account
FROM `Table1` `t1`, `table2` `t2`
WHERE `t1`.`id` = `t2`.`account` ORDER BY `rank` DESC
LIMIT 0,3
第1行:选择......
t1
。username
表示来自t1
。的用户名列,依此类推......而t1
,t2
符号来自......
第2行:来自......
Table1
t1
表示我从 Table1 查询,并为其分配了别名或指针t1
。我们将 table2 分配给t2
的方式也是如此。
第3行:哪里...... 这意味着您基于公共列加入表。在这种情况下, Table1 和 table2 共享相同的值集 - Table1 的ID和 table2 的帐户。因此,您使用了上述行。
订购... 这意味着您希望根据特定条件排列记录,在本例中为排名。有两个方向 - ASC表示升序(最小的顶部)或DESC表示降序。
第4行:限制0,3 这意味着我想得到第一行(0)和只有3条记录。因此,LIMIT 0,3
这是我能给出的最全面的解释。
答案 3 :(得分:0)
试试这个。
SELECT
t1.username as userName,
t1.email as email,
concat(t2.name, '(', t2.rank, ')') as name
FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.account
ORDER BY t2.rank DESC
答案 4 :(得分:0)
你可以试试这个:
SELECT a.username, a.email, c.name
FROM Accounts a, characters c
WHERE a.id=c.account
ORDER BY MAX(c.rank) DESC