php - 将 Order By 与 Union 结合使用 - SQL 语句
问题描述
我有一个数据库,其中包含从一个用户到另一个用户的直接消息。
表名:dm
id int(11) 主键
至:varchar
来自:varchar
消息:varchar
我有一个 SQL 语句,它从 to 和 from 列中选择不同的值,就好像它们是一列一样。($username 是一个会话变量)
"SELECT DISTINCT from
FROM dm
WHERE to = '$username'
UNION
SELECT DISTINCT to
FROM dm
WHERE from = '$username'
";
我正在检查该用户是否基本上收到或发送了任何消息。我想按 dm 的 ID 订购。如何更改我的代码以便获得相同的结果并按 id DESC 排序?如果我像这样简单地输入 ORDER BY,我会收到一个错误,因为我没有选择它...非常感谢您的帮助
"SELECT DISTINCT from
FROM dm
WHERE to = '$username'
UNION
SELECT DISTINCT to
FROM dm
WHERE from = '$username'
ORDER BY id DESC
";
解决方案
如果我得到了你想要做的事情,你应该把事情分开:
第一步:您的原始代码,加上添加到数据集中的用户 ID
CREATE TABLE new_table_name AS
SELECT DISTINCT ID, from
FROM dm
WHERE to = '$username'
UNION
SELECT DISTINCT ID, to
FROM dm
WHERE from = '$username';
第二步:按ID订购
CREATE TABLE ordered_table AS
SELECT *
FROM new_table_name
ORDER BY ID DESC;