我有两个表,其中一个表引用另一个表。
CREATE TABLE blogs (
article LONGTEXT,
id VARCHAR(255) PRIMARY KEY
);
CREATE TABLE blog_eval (
blog_id VARCHAR(255) REFERENCES blogs(id) ON DELETE CASCADE,
user_id VARCHAR(255) REFERENCES users(id),
is_like BOOLEAN, --true if like / false if dislike
PRIMARY KEY (blog_id, user_id)
);
我需要所有博客与两个额外的列:喜欢和不喜欢的总和。
如何将JOIN与COUNT函数结合使用,并区分喜好和厌恶?
3条答案
按热度按时间kjthegm61#
连接两个表,使用
SUM()
计算喜欢和不喜欢的总和。oxosxuxt2#
一个选项使用条件计数:
由于
is_like
是一个布尔值(本质上是一个整数),表达式sum(is_like)
计算真值。在子查询中预聚集可能有助于提高效率。在最近的MySQL版本(〉= 8.0.14)中,我们可以用横向连接来表达这一点,这可能会表现得更好:
mnemlml83#
您 不能 从 一 个 表 中 获取 所 需 的 所有 数据 吗 ?
中 的 每 一 个