两个查询,合并结果,排序

时间:2011-12-19 17:14:23

标签: php mysql

我是新手并坚持了几天......尝试从Google和这些论坛中找到的所有内容。

我有一个MySQL表,我需要从中提取数据。

我需要提取AgentID = 1234所有记录 同时,拉出OfficeID = 4321(和AgentID != 1234以防止欺骗行为的所有记录) 然后首先显示具有AgentID记录的结果(如果存在),然后显示OfficeID记录。

我尝试了一个UNION,但是找不到第一种排序或显示Agent的方法。 尝试了array_merge和两个查询/结果,但是合并后的数据被混合而不是Agent First数据,再次无法按代理排序。

任何想法都将不胜感激!

比尔

3 个答案:

答案 0 :(得分:4)

您可以在ORDER BY中使用CASE语句来强制执行指定的条件。

SELECT *
    FROM YourTable
    WHERE AgentID = 1234
        OR (OfficeID = 4321 AND AgentID <> 1234)
    ORDER BY CASE WHEN AgentId = 1234 THEN 0 ELSE 1 END,
             AgentID, OfficeID

答案 1 :(得分:0)

试试这样:

( SELECT 1 AS batch_no, .... FROM .... ) # the query with AgentID - the one that you want displayed first
 UNION
( SELECT 2 AS batch_no, .... FROM .... ) 

ORDER BY batch_no

答案 2 :(得分:0)

尝试类似:

SELECT * FROM table 
WHERE AgentId = 1234 OR (OfficeId = 4321 AND AgentId != 1234)
ORDER BY CASE WHEN AgentId = 1234 THEN 0 ELSE 1 END;