对于模糊标题,我表示歉意。我正在尝试编写一个查询,该查询返回具有匹配值(由IN产生)的别名列以及具有不匹配值(使用NOT IN)的别名列。我希望结果集具有:userId |匹配| nonmatches。我目前有以下查询返回匹配如预期。我遇到麻烦nonmatches结果集 - 也就是说,从NOT IN声明在SQL中结合IN和NOT IN作为单一结果
SET @userId = 9;
SELECT ug.user_id, COUNT(DISTINCT goal_id) as matches
FROM user_goal ug
WHERE [email protected]
AND goal_id IN (SELECT iug.goal_id FROM user_goal iug WHERE [email protected])
GROUP BY user_id ORDER BY matches DESC LIMIT 4
因此,NOT IN会是这个样子:
goal_id NOT IN(SELECT uggg.goal_id FROM user_goal uggg WHERE [email protected]) AS nonmatches
我只是不确定如何把NOT IN语句在我的查询,所以我得到的所有结果
我不知道我明白你的意思了“修理一个参数”,你能解释一下吗? – RyanLynch 2010-04-22 13:46:15
只是检查返回的目标是否属于用户,然后将某些值设置为“1”,否则将其设置为“0”,并且seted值可以具有别名“x” ,以便您可以按照user_id,x – 2010-04-22 14:00:32
对它们进行分组我不明白回答。 – Jodrell 2012-11-15 11:15:07