使用Order By with Union - SQL语句

时间:2018-05-29 22:28:47

标签: php mysql sql

我有一个数据库,其中包含从一个用户到另一个用户的直接消息。

表名: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
 ";

1 个答案:

答案 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;