Ошибка SQL Предложение ORDER BY не работает - PullRequest
0 голосов
/ 07 мая 2018

Предложение ORDER BY Не работает с Union, псевдонимы (as) вызывают ошибку

Стол Messenger

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

выберите выписку

  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'

Я не знаю, какую ошибку я совершил, помогите мне заранее Спасибо

Ответы [ 3 ]

0 голосов
/ 07 мая 2018

у вас нет среднего поля в запросе объединения, поэтому либо сделайте его

 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
0 голосов
/ 07 мая 2018

Почему вы используете 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;
0 голосов
/ 07 мая 2018

В вашем объединенном результате у вас нет среднего столбца
У вас есть только 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
...