首页新闻找找看学习计划

求一个sql函数。。。。万分感谢

0
悬赏园豆:15 [已解决问题] 解决于 2012-09-06 21:49
SELECT u.VIDEO_ID
         FROM   T_USER_LEARNING_RECORD AS u ,
                dbo.T_VIDEO AS v
         WHERE  u.VIDEO_ID = v.VIDEO_ID
                AND u.LEARNING_TIME >= v.TIME_LENGTH
                AND u.USER_ID = @user_id
                
SELECT VIDEO_ID FROM dbo.T_VIDEO WHERE COURSE_ID=@course_id

上面两个sql语句都是找VIDEO_ID的,怎么在数据库中写一个函数判断一个查找到的集合是不是在另一个查找的集合里面,怎么去实现?函数两个参数@user_id、  @course_id

天殇月痕的主页 天殇月痕 | 初学一级 | 园豆:48
提问于:2012-08-06 09:48
< >
分享
最佳答案
0

使用join 应该是可以的

if exists(select a.VIDEO_ID as VIDEO_ID_a ,b.VIDEO_ID as VIDEO_ID_b from 
(SELECT
u.VIDEO_ID FROM T_USER_LEARNING_RECORD AS u , dbo.T_VIDEO AS v WHERE u.VIDEO_ID = v.VIDEO_ID AND u.LEARNING_TIME >= v.TIME_LENGTH AND u.USER_ID = @user_id )
a
left join ( SELECT VIDEO_ID FROM dbo.T_VIDEO WHERE COURSE_ID=@course_id)
b on a.VIDEO_ID = b.VIDEO_ID
where b.VIDEO_ID is null)
print 'a 里 有的 b 里面没有'
收获园豆:10
Tom.汤 | 小虾三级 |园豆:1676 | 2012-08-06 12:51
其他回答(3)
0

数据全部查找出来,进行比对是否可以解决?

莎龙 | 园豆:204 (菜鸟二级) | 2012-08-06 10:35
0

--比较A,B是否相等 

if   (select   checksum_agg(binary_checksum(*))   from   A) 
        = 
      (select   checksum_agg(binary_checksum(*))   from   B) 
print   '相等 ' 
else 
print   '不相等 '   

http://topic.csdn.net/t/20050906/13/4252440.html

收获园豆:5
再见2019 | 园豆:11645 (专家六级) | 2012-08-06 11:02
0

不知道在多大的数据量下,不清楚你的具体需求,你是希望A 集合是否完整的存在与B集合中,还是找出A与B的交集呢?

个人不同意  @  Tom.汤  的做法,如果数据量大性能有问题

袁家小黑球 | 园豆:1045 (小虾三级) | 2012-08-08 10:35

希望A 集合是否完整的存在于B集合中

A集合 SELECT VIDEO_ID FROM dbo.T_VIDEO WHERE COURSE_ID=@course_id

B集合  SELECT u.VIDEO_ID
        
FROM   T_USER_LEARNING_RECORD AS u ,
                dbo.T_VIDEO
AS v
        
WHERE  u.VIDEO_ID = v.VIDEO_ID
               
AND u.LEARNING_TIME >= v.TIME_LENGTH
               
AND u.USER_ID = @user_id

支持(0) 反对(0) 天殇月痕 | 园豆:48 (初学一级) | 2012-08-08 13:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册