sql – 将两个选择查询合并为一个
发布时间:2020-05-24 11:53:41 所属栏目:MsSql 来源:互联网
导读:我有三个表:历史,视频和用户. 以下两个查询为每个视频显示法国用户或德国用户的观看次数: SELECT V.idVideo, COUNT(H.idVideo) AS nb_frFROM HISTORY HINNER JOIN VIDEO V ON V.idVideo = H.idVideoINNER JOIN USER U ON U.idUser = H.idUserWHERE U.nat
|
我有三个表:历史,视频和用户.
SELECT V.idVideo,COUNT(H.idVideo) AS nb_fr FROM HISTORY H INNER JOIN VIDEO V ON V.idVideo = H.idVideo INNER JOIN USER U ON U.idUser = H.idUser WHERE U.nationality = 'french' GROUP BY H.idVideo ORDER BY V.idVideo; 和 SELECT V.idVideo,COUNT(H.idVideo) AS nb_ge FROM HISTORY H INNER JOIN VIDEO V ON V.idVideo = H.idVideo INNER JOIN USER U ON U.idUser = H.idUser WHERE U.nationality = 'german' GROUP BY H.idVideo ORDER BY V.idVideo 但是如何将这两个查询结合起来只有一个? idVideo | nb_fr | nb_ge
-----------------------
1 | 5 | 4
2 | 3 | 6
3 | 2 | 8
4 | 3 | 3
解决方法用例表达式执行条件聚合:SELECT V.idVideo,COUNT(case when U.nationality = 'french' then H.idVideo end) AS nb_fr,COUNT(case when U.nationality = 'german' then H.idVideo end) AS nb_ge
FROM HISTORY H
INNER JOIN VIDEO V ON V.idVideo = H.idVideo
INNER JOIN USER U ON U.idUser = H.idUser
WHERE U.nationality in ('french','german')
GROUP BY V.idVideo
ORDER BY V.idVideo;
请注意对GROUP BY V.idVideo的更改,因为这是所选列. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
推荐文章
站长推荐
热点阅读
