CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

一个小问题,请有经验的朋友帮我看看是怎么回事?谢谢

楼主jml(飞翔)2004-08-01 11:21:43 在 MS-SQL Server / 基础类 提问

我有个SQL语句总是不能返回全部的查询结果,我正百思不得其解的时候,  
  我偶然把SQL语句输入错了,却发现有问题如下:  
  SELECT   *  
  FROM   (SELECT   VOD_HIS.film_name,   COUNT(VOD_HIS.film_name)   AS   COUNT  
                  FROM   VOD_HIS  
                  GROUP   BY   VOD_HIS.film_name)   a,   VOD_HIS   b  
  WHERE   a.FILM_NAME   =   b.FILM_NAME   AND   a.FILM_NAME   =   1  
  ORDER   BY   COUNT   DESC  
   
  执行的时候出现这样的错误提示:  
  。。。[SQL   Server]   将nvarchar   值‘超能塞豆窿1’转换为数据类型为int的列时发生语法错误  
  超能塞豆窿1就是一个VOD_HIS.film_name  
  而我前面正确的SQL语句就是不能查到这个“超能塞豆窿1”的记录,请教大家是什么原因呢?这个错误的提示是否提示了我前面不能返回该查询记录的原因呢? 问题点数:20、回复次数:8Top

1 楼jml(飞翔)回复于 2004-08-01 11:25:17 得分 0

抱歉!我真是昏头了,前面的问题无效,改问下面这个问题:  
   
  在一个表VOD_HIS中,可以实现以下操作  
  SELECT   film_name,   COUNT(FILM_NAME)   AS   COUNT   FROM   VOD_HIS     where   ORDER_TIME   BETWEEN   0:0:0   and   23:59:59   GROUP   BY   film_name   ORDER   BY   COUNT   DESC  
  该操作对表中film_name字段内容相同的记录进行统计,并对统计结果排行  
   
  现在我要实现另一个功能,在上面的统计结果中,我还要通过film_name查询另一个表FILM_INFO,使得上面的统计结果必须满足表FILM_INFO的FILM_TYPE_ID字段必须等于一个特定的值1,我的SQL语句是这样写的  
  SELECT   film_name,   COUNT(FILM_NAME)   AS   COUNT   FROM   VOD_HIS,FILM_INFO     WHERE   VOD_HIS.FILM_NAME=FILM_INFO.FILM_NAME   AND   FILM_TYPE_ID=1   GROUP   BY   film_name   ORDER   BY   COUNT   DESC  
   
  可是查询语句分析却是错误的,我是新手,请高手指点一二,谢了!  
  Top

2 楼zjcxc(邹建)回复于 2004-08-01 11:25:52 得分 5

SELECT   *  
  FROM   (SELECT   VOD_HIS.film_name,   COUNT(VOD_HIS.film_name)   AS   COUNT  
                  FROM   VOD_HIS  
                  GROUP   BY   VOD_HIS.film_name)   a,   VOD_HIS   b  
  WHERE   a.FILM_NAME   =   b.FILM_NAME   AND   a.FILM_NAME   like   '%1%'  
  ORDER   BY   COUNT   DESCTop

3 楼jml(飞翔)回复于 2004-08-01 11:27:20 得分 0

有网友给我提供了下面的两种SQL语句,可是都不能查询完全,总是会漏掉记录,请高手指点!!!  
  SELECT   film_name,   COUNT(FILM_NAME)   AS   COUNT   FROM   VOD_HIS      
  where   ORDER_TIME   BETWEEN   '0:0:0'   and   '23:59:59'    
  and   exists   (  
  select   1   from   FILM_INFO      
  where   FILM_NAME=VOD_HIS.FILM_NAME  
  and   FILM_TYPE_ID=1  
  )  
  GROUP   BY   film_name  
   
  SELECT   VOD_HIS.film_name,   COUNT(VOD_HIS.film_name)   AS   COUNT   FROM   VOD_HIS,FILM_INFO     WHERE   VOD_HIS.FILM_NAME=FILM_INFO.FILM_NAME   AND   FILM_TYPE_ID=1   GROUP   BY   VOD_HIS.film_namee   ORDER   BY   COUNT   DESC  
  Top

4 楼zjcxc(邹建)回复于 2004-08-01 11:28:16 得分 5

--这个语句会是正确的??   不信  
   
  SELECT   film_name,   COUNT(FILM_NAME)   AS   COUNT    
  FROM   VOD_HIS      
  where   ORDER_TIME   BETWEEN   0:0:0   and   23:59:59    
  GROUP   BY   film_name    
  ORDER   BY   COUNT   DESCTop

5 楼jml(飞翔)回复于 2004-08-01 11:31:22 得分 0

zjcxc(邹建)   :你好!这个语句有什么问题呢?可是我确实实现了的啊Top

6 楼tyrone98(林林)回复于 2004-08-01 11:40:36 得分 5

能用ORDER   BY   COUNT   DESC吗,我没有试过,不知道行不行,好象要写成COUNT(FILM_NAME)才行吧.Top

7 楼guxing(孤星)回复于 2004-08-01 11:42:16 得分 5

要写成COUNT(FILM_NAME)才行Top

8 楼jml(飞翔)回复于 2004-08-01 11:52:49 得分 0

各位大侠,请帮我看看这样的语句为什么会漏掉记录好吗?  
  SELECT   film_name,   COUNT(FILM_NAME)   AS   COUNT  
  FROM   VOD_HIS  
  WHERE   EXISTS  
                      (SELECT   1  
                    FROM   FILM_INFO  
                    WHERE   FILM_NAME   =   VOD_HIS.FILM_NAME   AND   FILM_TYPE_ID   =   1)  
  GROUP   BY   film_name  
  ORDER   BY   COUNT   DESC  
   
  SELECT   VOD_HIS.film_name,   COUNT(VOD_HIS.film_name)   AS   COUNT   FROM   VOD_HIS,FILM_INFO     WHERE   VOD_HIS.FILM_NAME=FILM_INFO.FILM_NAME   AND   FILM_TYPE_ID=1   GROUP   BY   VOD_HIS.film_namee   ORDER   BY   COUNT   DESC  
  Top

相关问题

  • 大事不好了,请有经验的大哥大嫂帮我看看是怎么回事(小MM请回避)
  • 怎么回事,,,帮帮菜鸟我。。。
  • 大家帮我看看怎么回事:
  • 怎么回事?请高手帮忙!
  • 帮忙看看这是怎么回事?
  • 帮我看看,怎么回事?
  • 大家帮我看看怎么回事!
  • 大家帮我看看怎么回事。
  • 怎么回事?大家帮我看看
  • 大家帮忙看看怎么回事

关键词

  • vod
  • 语句
  • 查询
  • sql
  • film
  • count
  • order by count desc
  • 表
  • 记录
  • 错误

得分解答快速导航

  • 帖主:jml
  • zjcxc
  • zjcxc
  • tyrone98
  • guxing

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo