SQL 错误 ORDER BY 子句不工作

SQL error ORDER BY clause Not working

ORDER BY 子句不适用于 Union,别名 (as) 出现一些错误

信使table

       mid    senderid   receiverid   message   
      ---------------------------------------
        4       100       200          hi
        3       200       100          hello
        2       100       200          hi
        1       100       200          hi

select 语句

  select senderid as new_id from messenger  where  receiverid=200
  union 
  select  receiverid from messenger  where  senderid =200
  order by mid  desc

错误

   #1054 - Unknown column 'mid' in 'order clause'

我不知道我犯了什么错误,帮帮我先谢谢了

在你的联合结果中你没有中间列
你只有 new_id 你应该添加

select mid, senderid as new_id 
from messenger  where  receiverid=200
union 
select mid, receiverid 
from messenger  where  senderid =200
order by mid  desc

或避免仅使用单个查询进行联合

select case when senderid = 200 then reciverid else senderid as new_id 
from messenger  
where  receiverid=200 or senderid = 200
order by mid

你的联合查询中没有中间字段,所以要么让它成为

 select senderid as new_id from messenger  where  receiverid=200
  union 
  select  receiverid as new_id from messenger  where  senderid =200
  order by new_id  desc

或到

 select mid,senderid as new_id from messenger  where  receiverid=200
  union 
  select  mid,receiverid as new_id from messenger  where  senderid =200
  order by mid  desc

为什么要使用 union

select (case when receiverid = 200 then senderid else receiverid end) as new_id
from messenger m
where 200 in (receiverid, senderid)
group by new_id
order by min(mid) desc;