Mysql 将两列中的数据合并为一列进行排序

Mysql 将两列中的数据合并为一列进行排序,mysql,select,union,Mysql,Select,Union,我正在尝试将SELECT中的两列合并,并将别名合并到第三列 我还需要检索与WHERE子句匹配的数据,然后按别名列MLS_排序 这个,以及我尝试过的各种各样的,都不起作用 这一部分确实有效,并使用正确的值创建了MLS_排序别名,但我不知道如何将结果限制在上面的WHERE子句中: 我是否至少走上了正确的道路,还是这不是正确的方式 谢谢您的帮助。尝试以下方法: select * from ( (SELECT MLS_AGENT_ID AS MLS_SORT FROM

我正在尝试将SELECT中的两列合并,并将别名合并到第三列

我还需要检索与WHERE子句匹配的数据,然后按别名列MLS_排序

这个,以及我尝试过的各种各样的,都不起作用

这一部分确实有效,并使用正确的值创建了MLS_排序别名,但我不知道如何将结果限制在上面的WHERE子句中:

我是否至少走上了正确的道路,还是这不是正确的方式


谢谢您的帮助。

尝试以下方法:

    select * from
    (
    (SELECT MLS_AGENT_ID AS MLS_SORT 
     FROM mlsdata
     WHERE (MLS_AGENT_ID = $agent_narid)
     )
    UNION
    (SELECT MLS_OFFICE_ID AS MLS_SORT 
     FROM mlsdata
     WHERE (MLS_OFFICE_ID = $office_narid)
     )) a
    ORDER BY MLS_SORT
编辑:

替代订单

ORDER BY 1

诀窍是理解UNION:query的语法UNION-query

我想你想要:

SELECT MLS_SORT
FROM
(
    SELECT MLS_AGENT_ID AS MLS_SORT 
      FROM mlsdata
     WHERE MLS_AGENT_ID = $agent_narid

    UNION

    SELECT MLS_OFFICE_ID AS MLS_SORT 
      FROM mlsdata
     WHERE MLS_OFFICE_ID = $office_narid
)
ORDER BY MLS_SORT
将两个ID子集放入一个结果集中,然后对它们进行排序

但是,整个查询看起来将给出两行结果集——一行用于代理,另一行用于办公室。这就是你想要的吗


您的逻辑有效地将代理id和办公室id号键入到单个结果集中。这在您的应用程序中有意义吗?

谢谢您的回复。我确实希望有一个派生列MLS_SORT,它将包含代理id和办公室id的组合结果。表中不存在MLS_SORT。基本上检索agent id=agent id或office id=office id的所有记录,将agent id和office id数据合并到一列中,然后按该列排序。我尝试了您的代码,但收到了:mysql\u num\u rows:supplied参数不是…中的有效mysql结果资源,mysql\u fetch\u array:supplied参数不是有效的mysql结果资源…尝试将MLS\u sort更改为*并获得相同的结果。我假设$agent\u narid和$office\narid项被任何内容替换您用来编写发出查询PHP的代码的语言?你没提到。您收到的消息来自该语言,而不是mySQL服务器。您可以尝试用常量代替$variable项进行调试。一旦成功,您就可以让替换工作了。是的,PHP,对不起!我要试一试。谢谢嗨,Randy,用你的例子,在union之后添加ALL以获得所有11个结果,我得到了MLS_排序列的正确结果。办公室和代理ID的组合。但是,即使使用了*也不会检索到其他数据。即使检索到的行数为11,也只有MLS_排序列有数据。。。如果我将*更改为存在的任何其他列名,我会得到:警告:mysql\u num\u rows:提供的参数不是有效的mysql结果资源…有什么想法吗?您的order by必须在子选择中包含一个名称。。。您可以尝试使用“1”代替第一列来指示顺序。。。
ORDER BY 1
SELECT MLS_SORT
FROM
(
    SELECT MLS_AGENT_ID AS MLS_SORT 
      FROM mlsdata
     WHERE MLS_AGENT_ID = $agent_narid

    UNION

    SELECT MLS_OFFICE_ID AS MLS_SORT 
      FROM mlsdata
     WHERE MLS_OFFICE_ID = $office_narid
)
ORDER BY MLS_SORT