【发布时间】:2014-07-12 04:10:53
【问题描述】:
我有以下表格:
scenes
------
scene_id
title
video_url
modified_at
uuid
likes
----
scene_id
uuid
active
users
-----
uuid
username
问题 1: 我想按降序获取场景、scene_id、作者的点赞数;请注意,我们只需要计算点赞表中活跃的点赞数!
我的尝试:
SELECT s.scene_id,s.video_url,s.title,s.uuid, u.username as author,s.data,count(l.active) as likes
FROM scenes s
left join likes l
on l.scene_id = s.scene_id
join users u
on u.uuid = s.uuid
where s.video_url IS not NULL
group by s.scene_id
order by modified_at DESC;
但这是计算所有的喜欢,不管它是否活跃!我不知道如何在我的查询中添加那个!
问题 2:
我还想知道是否可以在结果集中添加另一列来显示特定用户(可以在 where 子句中传递和使用 uuid)是否喜欢结果集中的每个场景?是否可以仅在一个查询中获得此结果?
如果您需要更多说明,请告诉我!
谢谢!
【问题讨论】:
-
?????总和?????? - 或 ELSE NULL
-
嗯;好人!现在我尝试了 sum(l.active) 并且它正在工作!但是如果它不喜欢它会返回 null,所以我尝试了 ISNULL(sum(l.active)) 并给了我错误!任何想法?你对问题 2 也有任何想法吗?
-
还尝试了 SUM(ISNULL(l.active, 0)) 并显示:调用本机函数 'ISNULL' 时参数计数不正确
-
'active' 列的可能值是多少,即如何指定 active like?
-
有几个选项。这是一个:COALESCE(SUM(x=y),0)