"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获得?
答案 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
表示已使用哪个部分