-2

在 PostgreSQL 8.4 中,我有一个连接总是返回 3 行(它们代表 3 名玩家在玩游戏回合 -

# SELECT r.rid, c2.pos, c2.money, c2.last_ip, c2.quit,
u.id, u.first_name
FROM pref_rounds r
JOIN pref_cards c1 USING (rid)
JOIN pref_cards c2 USING (rid)
JOIN pref_users u ON u.id = c2.id
WHERE c1.id = 'OK336197153288';
  rid   | pos | money |     last_ip     | quit |          id           | first_name
--------+-----+-------+-----------------+------+-----------------------+------------
 165684 |   0 |    14 | 77.91.175.242   | f    | OK336197153288        | Елена
 165684 |   1 |    -2 | 195.177.124.218 | f    | OK3982469933          | Константин
 165684 |   2 |   -14 | 92.243.183.44   | f    | MR438331292705069453  | Дмитрий

 165711 |   2 |    10 | 77.91.175.242   | f    | OK336197153288        | Елена
 165711 |   0 |    -2 | 195.177.124.218 | f    | OK3982469933          | Константин
 165711 |   1 |    -6 | 92.243.183.44   | f    | MR438331292705069453  | Дмитрий

 165764 |   1 |    13 | 77.91.175.242   | f    | OK336197153288        | Елена
 165764 |   2 |   -17 | 195.177.124.218 | f    | OK3982469933          | Константин
 165764 |   0 |     3 | 92.243.183.44   | f    | MR438331292705069453  | Дмитрий

不幸的是,它们没有按pos排序(第二列是游戏桌上的位置)。

请在 SQL 中使用一种方法对上述 3 行集进行排序,以便它们始终具有pos:0 1 2 然后又是 0 1 2?

还是我必须在我的 PHP 脚本中执行此操作?

4

2 回答 2

1

使用以下 sql 查询。它将为您提供所需的结果。

# SELECT r.rid, c2.pos, c2.money, c2.last_ip, c2.quit,
u.id, u.first_name
FROM pref_rounds r
JOIN pref_cards c1 USING (rid)
JOIN pref_cards c2 USING (rid)
JOIN pref_users u ON u.id = c2.id
WHERE c1.id = 'OK336197153288'
Order by r.rid asc, c2.pos asc
;
于 2012-05-03T06:34:03.223 回答
1

也许是这样的:

SELECT r.rid, c2.pos, c2.money, c2.last_ip, c2.quit,
u.id, u.first_name
FROM pref_rounds r
JOIN pref_cards c1 USING (rid)
JOIN pref_cards c2 USING (rid)
JOIN pref_users u ON u.id = c2.id
WHERE c1.id = 'OK336197153288'
ORDER BY r.rid,c2.pos;

您首先需要按时订购才能让他们r.ridc2.pos您的意愿订购

于 2012-05-03T06:34:50.977 回答