【发布时间】:2022-01-18 12:26:08
【问题描述】:
我正在尝试使用来自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 |
通过这个查询,我可以选择整个ban 记录 + 从users 表中获取用户的name:
SELECT
bans.*,
(SELECT users.name FROM users WHERE users.uuid = bans.uuid) as name
FROM bans
ORDER BY :column;
但我无法通过name 订购。如何更改此查询以便我可以通过users.name 进行订购?我试图将我的 SQL 选择包装到另一个选择中,但它不起作用,我无法解决它:D
【问题讨论】:
-
不能将列名或表名设为参数
-
你需要一个 JOIN 而不是一个子查询
-
只是占位符。我从我的 PHP PDO 查询中复制了它
-
可以,但不能将列名设为参数
标签: mysql sql subquery sql-order-by