SQL - 使用 select 的子查询排序 table
SQL - Ordering table with subquery for select
我正在尝试对来自 uuid
的 name
的子查询进行查询排序。让我们在 MySQL:
中加入这两个 table
封禁:
id
uuid
time
reason
1
c6b8eade-7db9-345b-b838-8f8361552cf5
1642369382
Test
2
0138c279-c5fa-3acd-adaa-8edb7b4569d8
1642384565
Spam
3
3c01262c-a3c3-3133-ba43-92a9ded01c27
1631876477
Hax
用户:
id
uuid
name
45
c6b8eade-7db9-345b-b838-8f8361552cf5
John
100
0138c279-c5fa-3acd-adaa-8edb7b4569d8
Mike
35
3c01262c-a3c3-3133-ba43-92a9ded01c27
Norman
通过这个查询,我可以 select 整个 ban
记录 + 从 users
table:
获取用户的 name
SELECT
bans.*,
(SELECT users.name FROM users WHERE users.uuid = bans.uuid) as name
FROM bans
ORDER BY :column;
但我无法通过 name
订购。如何更改此查询以便我可以按 users.name
进行排序?我试图将我的 SQL select 包装到另一个 select 中,但它不起作用,我无法解决它:D
也许你可以试试这个
select a.id, a.uuid, a.time, a.reason, b.name from bans a
left join users b
on a.uuid = b.uuid
order by b.name;
如果我见过的话,那是一个 JOIN 查询。
您不能在 PDO 或 MYSQLI 中将 table 或列名作为参数传递。数据库无法编译和优化包含未知列或 table 的代码
SELECT b.*, u.name
FROM bans b
LEFT JOIN users u ON u.uuid = b.uuid
ORDER BY u.name;
我正在尝试对来自 uuid
的 name
的子查询进行查询排序。让我们在 MySQL:
封禁:
id | uuid | time | reason |
---|---|---|---|
1 | c6b8eade-7db9-345b-b838-8f8361552cf5 | 1642369382 | Test |
2 | 0138c279-c5fa-3acd-adaa-8edb7b4569d8 | 1642384565 | Spam |
3 | 3c01262c-a3c3-3133-ba43-92a9ded01c27 | 1631876477 | Hax |
用户:
id | uuid | name |
---|---|---|
45 | c6b8eade-7db9-345b-b838-8f8361552cf5 | John |
100 | 0138c279-c5fa-3acd-adaa-8edb7b4569d8 | Mike |
35 | 3c01262c-a3c3-3133-ba43-92a9ded01c27 | Norman |
通过这个查询,我可以 select 整个 ban
记录 + 从 users
table:
name
SELECT
bans.*,
(SELECT users.name FROM users WHERE users.uuid = bans.uuid) as name
FROM bans
ORDER BY :column;
但我无法通过 name
订购。如何更改此查询以便我可以按 users.name
进行排序?我试图将我的 SQL select 包装到另一个 select 中,但它不起作用,我无法解决它:D
也许你可以试试这个
select a.id, a.uuid, a.time, a.reason, b.name from bans a
left join users b
on a.uuid = b.uuid
order by b.name;
如果我见过的话,那是一个 JOIN 查询。
您不能在 PDO 或 MYSQLI 中将 table 或列名作为参数传递。数据库无法编译和优化包含未知列或 table 的代码
SELECT b.*, u.name
FROM bans b
LEFT JOIN users u ON u.uuid = b.uuid
ORDER BY u.name;