使用union选择时,使用两个不同的名称获取数据

时间:2014-05-16 00:48:28

标签: mysql sql

"SELECT accepted AS accepted1 
 FROM friends WHERE from_id = :request_from AND to_id = :request_to 
 UNION SELECT accepted AS accepted2 
 FROM friends WHERE from_id = :request_to2 AND to_id = :request_from2"

在此查询中,即使查询的第二部分(在UNION SELECT之后)为真,我也会将所有结果视为已接受1。 如何从查询的第二部分将结果作为accepted2获得?

2 个答案:

答案 0 :(得分:3)

这就是UNION语句的行为方式。一般来说,它将两个查询的结果合二为一。因此,由于您只在每个查询中选择一个字段,因此只有一列 - 单个列只能有一个名称。

如果您需要知道它来自哪个查询,您可以添加第二列并使用它来了解。

SELECT accepted, 'accepted1' as source
FROM friends 
WHERE from_id = :request_from 
    AND to_id = :request_to 
UNION 
SELECT accepted, 'accepted2'  
FROM friends 
WHERE from_id = :request_to2 
    AND to_id = :request_from2

答案 1 :(得分:0)

我认为你可以通过这样做来简化查询:

SELECT accepted, from_id AS 'from' FROM friends 
WHERE (from_id = :request_from AND to_id = :request_to) 
   OR (from_id = :request_to2  AND to_id = :request_from2)

第二个字段from表示已使用哪个部分