MySQLFiddle链接: http://sqlfiddle.com/#!2/15d447/1
我有一个单表需要操作:
表1: user_answers
(存储用户对各种问题的答案)
存储的值包括用户 ID (列uid
)、他们正在回答的问题的问题 ID (列quid
)、问题的答案 (列answer
) 和答案的重要性 (列importance
)。
我想要的最终结果:
我希望能够获取任何两个用户都回答过的所有问题,排除任何一方没有回答或者同一问题两个用户在列importance
中的任意一个值为1的情况。同样,这将仅用于比较两个用户。
我一直没有成功的尝试,但以下是我尝试的内容:
#attempt one: trying to exclude answers that were not answered by both users
SELECT * FROM user_answers AS uid1
JOIN user_answers AS uid2 ON uid1.uid = uid2.uid
WHERE uid1.uid = 1
AND uid2.uid = 20008
AND uid1.quid IS NOT NULL
AND uid2.quid IS NOT NULL;
这个没有返回结果,但我不太确定原因。
#attempt two: trying to exclude where answers are the same for both users
SELECT * FROM user_answers AS uid1
LEFT JOIN user_answers AS uid2 ON (uid1.uid = uid2.uid AND uid1.answer <> uid2.answer)
这给我带来了结果,但由于连接的关系似乎重复了一切。在这个尝试中,我也试图消除任何相同的答案,从那个意义上看似乎是有效的。 感谢您提供任何指导。