mysql - 给定一个帖子 X,选择所有的帖子 Y,使得对它们都评分的用户都没有喜欢它们

标签 mysql sql

假设有一个名为“users”的表、一个名为“posts”的表和一个名为“ratings”的表,其中包含每个用户对每个帖子的评分(“喜欢”或“不喜欢”)。

create table ratings (
user_id int unsigned not null,
post_id int unsigned not null,
rating set('like','dislike') not null,
primary key (user_id, post_id)
);

给定一个帖子 X,我想选择所有的帖子 Y,使得对它们都评分的用户都不会喜欢它们。此外,如果可能的话,我想按照对它们进行评分的普通用户数量对这些帖子进行排序,这意味着具有 X 的最常见“评分者”的帖子 Y 应该排在第一位。

我会复制我目前所做的一切,但我认为这些都不值得。感谢任何帮助,谢谢!

最佳答案

尝试 this fiddle .我不是 100% 确定我得到了你想要的,但是......检查你自己的数据是否合适。

您还可以删除 WHERE 并将 X.post_id AS this_post_id 添加到 FROM 以获取所有帖子的此信息。

关于mysql - 给定一个帖子 X,选择所有的帖子 Y,使得对它们都评分的用户都没有喜欢它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9543347/

相关文章:

mysql - SQL查询错误SELECT + JOIN +中的未知列

php - 错误 : check the manual [. ..] MySQL 服务器版本,以便在 ' 附近使用正确的语法

sql - Android 记事本 Uri 解释

mysql - 按某些列混合 `select`查询结果

php - 如何对 mysql 数据库进行多部分 PHP 查询

php - 带计数的sql请求

php - 将多个 MySQL 语句合并为一个

c# - 使用参数查询的问题

sql - MSSQL 一天或一天​​范围的日期范围的最佳查询

c# - Sql 查询帮助,接近 = 的语法错误