由UNION独特的电影结果两个加入,MYSQL

时间:2015-06-23 12:57:54

标签: mysql join union

我向UNION运行了以下查询,在以下4个表中有两个连接的结果:

SELECT member_CROWD.worker_Id, member_CROWD.Unreliable, Answer_CROWD.qId, Answer_CROWD.answer
FROM member_CROWD
JOIN `Answer_CROWD` 
ON member_CROWD.worker_Id = Answer_CROWD.worker_Id 
WHERE member_CROWD.Unreliable = '0' AND Answer_CROWD.qId = 'q8'
GROUP BY Answer_CROWD.answer

UNION

SELECT member.mem_id, member.Unreliable, Answer.qId, Answer.answer
FROM member
JOIN `Answer` 
ON member.mem_id = Answer.userId 
WHERE member.Unreliable = '0' AND Answer.qId = 'q8'
GROUP BY Answer.answer

这是因为我有两个实验来收集数据;一个是通过要求我的朋友填写我的调查(存储在成员和答案表中的数据),另一个是通过众包(存储在member_CROWD和Answer_CROWD中的数据)。

现在的问题是,我想知道例如"用户选择的唯一电影数量" ,但是来自所有用户(朋友和群众)。上面的查询可以UNION两个连接结果,但仍然答案不是唯一的(因为它们在每个连接结果中都是唯一的)。

有人可以帮我知道如何在整个实验中获得独特的电影效果吗?

谢谢,

1 个答案:

答案 0 :(得分:2)

Distinct可以在mysql中的计数内运行,非常方便。

select Count(Distinct answer) from (
SELECT member_CROWD.worker_Id, member_CROWD.Unreliable, Answer_CROWD.qId, Answer_CROWD.answer
FROM member_CROWD
JOIN `Answer_CROWD` 
ON member_CROWD.worker_Id = Answer_CROWD.worker_Id 
WHERE member_CROWD.Unreliable = '0' AND Answer_CROWD.qId = 'q8'
GROUP BY Answer_CROWD.answer

UNION

SELECT member.mem_id, member.Unreliable, Answer.qId, Answer.answer
FROM member
JOIN `Answer` 
ON member.mem_id = Answer.userId 
WHERE member.Unreliable = '0' AND Answer.qId = 'q8'
GROUP BY Answer.answer
) a