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

Bil*_*ill 4 mysql union select

我想在SELECT中使用UNION两列,而在第三列中使用别名.

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

这个,以及我尝试过的变体都不起作用.

SELECT *
FROM
(SELECT MLS_AGENT_ID AS MLS_SORT FROM mlsdata)

UNION

(SELECT MLS_OFFICE_ID AS MLS_SORT FROM mlsdata)

WHERE (MLS_AGENT_ID = $agent_narid) OR (MLS_OFFICE_ID = $office_narid)      

ORDER BY MLS_SORT
Run Code Online (Sandbox Code Playgroud)

这部分确实有效,并使用正确的值创建MLS_SORT别名,但我无法弄清楚如何将结果限制为上面的WHERE子句:

(SELECT MLS_AGENT_ID AS MLS_SORT FROM mlsdata)

UNION

(SELECT MLS_OFFICE_ID AS MLS_SORT FROM mlsdata)
Run Code Online (Sandbox Code Playgroud)

我至少走在正确的道路上,或者这不是正确的方法吗?

谢谢你的帮助.

O. *_*nes 5

诀窍是理解UNION的语法:查询UNION查询

我想你想要:

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
Run Code Online (Sandbox Code Playgroud)

要将两个ID子集放入单个结果集中,请对它们进行排序.

但是,这整个查询看起来会给出一个两行结果集 - 一个代理行,另一个代表办公室.那是你要的吗?

您的逻辑有效地将代理ID和办公室ID编号转换为单个结果集.这在你的申请中有意义吗?