SQLite无法获取双重数据
我有一个评分系统,人们可以对想法进行评分。用户可以从SQLite数据库中获得他尚未投票支持的想法的摘要。我的问题是,数据库仍然得到他已经投票支持的想法。查询必须在其中操作的表如下所示:SQLite无法获取双重数据,sql,sqlite,group-by,distinct,Sql,Sqlite,Group By,Distinct,我有一个评分系统,人们可以对想法进行评分。用户可以从SQLite数据库中获得他尚未投票支持的想法的摘要。我的问题是,数据库仍然得到他已经投票支持的想法。查询必须在其中操作的表如下所示: ID (pk), ratingScore, userID, ideaID 1 3 1 1 2 4 2 1 3 5 2 2 SELECT ideas.ideaID F
ID (pk), ratingScore, userID, ideaID
1 3 1 1
2 4 2 1
3 5 2 2
SELECT ideas.ideaID
FROM (SELECT DISTINCT ideaID FROM Ratings) ideas LEFT JOIN
Ratings r ON r.ideaID = ideas.ideaID AND r.userID=1
WHERE r.ideaID IS NULL;
Ratings score是用户给出想法的分数,userID是投票用户的ID,ideaID是想法的ID
我如何才能从用户1那里得到他没有投票支持的想法,而不获得其他想法,因此此表上的查询结果只能是“ideaID 2”
SELECT Ratings.ideaID
FROM Ratings
WHERE (NOT(Ratings.userID)=1)
GROUP BY ideaID;
这是我尝试过的,但不起作用,我也尝试过DISTINCT,但也不起作用。您需要获得所有想法的列表,然后将其加入到您的表中,如下所示:
ID (pk), ratingScore, userID, ideaID
1 3 1 1
2 4 2 1
3 5 2 2
SELECT ideas.ideaID
FROM (SELECT DISTINCT ideaID FROM Ratings) ideas LEFT JOIN
Ratings r ON r.ideaID = ideas.ideaID AND r.userID=1
WHERE r.ideaID IS NULL;
上面的示例将为单个用户提供一个未引导的想法列表。假设您有一个
ideas
表,您可以使用类似这样的相关子查询来查找不存在该用户评级的想法:
SELECT ID
FROM Ideas
WHERE NOT EXISTS (SELECT 1
FROM Ratings
WHERE userID = 1
AND ideaID = Ideas.ID)
(如果有一个想法没有被任何用户评分,那么从
评分表
中读取想法将失败。)您是否可以转储示例数据库并复制它,以便更容易发布解决方案?(sqlite终端上的类型:.dump)