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

我有一个评分系统,人们可以对想法进行评分。用户可以从SQLite数据库中获得他尚未投票支持的想法的摘要。我的问题是,数据库仍然得到他已经投票支持的想法。查询必须在其中操作的表如下所示:

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)