我有一个数据库,其中包含从一个用户到另一个用户的直接消息。
表名:dm
id int(11)主键
to: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
";
答案 0 :(得分:-1)
如果我得到了你想做的事情,你应该把事情分开:
第1步:您的原始代码,以及添加到数据集的用户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;