Mysql SQL错误ORDER BY子句不起作用
ORDERBY子句不使用Union,别名(as)出现错误 信使表Mysql SQL错误ORDER BY子句不起作用,mysql,sql,sql-order-by,Mysql,Sql,Sql Order By,ORDERBY子句不使用Union,别名(as)出现错误 信使表 mid senderid receiverid message --------------------------------------- 4 100 200 hi 3 200 100 hello 2 100 200
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'
我不知道我犯了什么错误,请帮助我提前感谢你的联合结果,你没有中间栏
您只有
新的\u 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 (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;
当UNION时,仅可按顺序使用select列表项。(改为使用UNION ALL。)Mid是一个列,而不是一个字段。@jarlh只是不同的术语,field=column,record=rowWell,不符合ISO/ANSI SQL规范。(可能与Excel文档中的一样?)先生,它可以工作,但我如何使用distinct来忽略多个值的帮助me@CforCODE . . . 我很惊讶你接受了这个答案。你的问题意味着你想要一列而不是两列。更重要的是,这不会删除重复项。@scaisEdge是的,我知道并解决了我的问题,谢谢again@scaisEdge先生,请帮我解决这个问题
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;