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