SQL语句

dengyi425 2015-10-29 11:32:35
表TableA是一个电视剧的的列表,存储的是
Aid,Aname
1 第1集
2 第2集
3 第3集
4 第3集
...

表TableB存储的是用户观看列表 存储的是观看记录
Bid,Aid
1 1
2 2
3 3
...

我现在用一条SQL语句查出所有的TableA关联出TableB查出已观看的和观看顺序(当前观看是第2集,只允许看第2集以前和第3集,不能看第3集以后)
结果如下:
ID 名称 是否观看 是否为下一集观看顺序
1 第1集 true true
2 第2集 true true
3 第3集 false true
4 第4集 false false
...全文
49 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dengyi422 2015-10-29
SELECT CASE WHEN (SELECT MAX(aid) FROM TableB)>=A.AID THEN 1 ELSE 0 END AS IsStudy, CASE WHEN (SELECT MAX(aid) FROM TableB)+1>=A.AID THEN 1 ELSE 0 END AS IsVod, A.* FROM TableA as A LEFT JOIN TableB AS B ON B.AID=A.AID
回复
Tiger_Zhao 2015-10-29
WITH
/* 测试数据
tableA(Aid,Aname)AS(
SELECT 1,'第1集' UNION ALL
SELECT 2,'第2集' UNION ALL
SELECT 3,'第3集' UNION ALL
SELECT 4,'第4集'
)
,TableB(Bid,Aid)AS(
SELECT 1,1 UNION ALL
SELECT 2,2
),*/
c AS (
SELECT a.Aid ID,
a.Aname 名称,
CASE WHEN b.Bid IS NULL THEN
'false'
ELSE
'true'
END 是否观看
FROM tableA a
LEFT JOIN tableB b
ON a.Aid = b.Aid
)
,d AS (
SELECT *,
ROW_NUMBER() OVER(PARTITION BY 是否观看
ORDER BY ID) rn
FROM c
)
SELECT ID,
名称,
是否观看,
CASE WHEN 是否观看='true' THEN
'true'
WHEN rn=1 THEN
'true'
ELSE
'false'
END 是否为下一集观看顺序
FROM d
ORDER BY ID

         ID 名称  是否观看 是否为下一集观看顺序
----------- ----- -------- --------------------
1 第1集 true true
2 第2集 true true
3 第3集 false true
4 第4集 false false
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-10-29 11:32
社区公告
暂无公告