sql server查询问题。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server查询问题。相关的知识,希望对你有一定的参考价值。

有三张表stu(学号,姓名,院系),cou(课程号,课程名称),scor(课程号,学号,成绩)
1。查询选修了课程号是001的学生姓名和所在院系。
2.现在有三种课程:高数,数据库,信息系统。查询每门课及格的人数,结果像这样出现

用一句SQL语句实现。

3.查询每门课的平均成绩以及最好成绩,并且按照课程名称升序排列。要求显示 课程名称,平均成绩,最好成绩,用一句SQL语句实现。
请详解 十分感谢

参考技术A 1、select stu.姓名,stu.院系
from stu join scor on stu.学号=scor.学号
join cou on cou.课程号=scor.课程号
where scor.课程号='001'
2、select stu.姓名,stu.院系 --想看什么字段自己填吧 你没有说
from stu join scor on stu.学号=scor.学号
join cou on cou.课程号=scor.课程号
where cou.课程名称 in('高数','数据库','信息系统')
and scor.成绩>=60
3、select cou.课程名称,avg(scor.成绩) 平均成绩,max(scor.成绩) 最好成绩
from stu join scor on stu.学号=scor.学号
join cou on cou.课程号=scor.课程号
group by cou.课程名称
order by cou.课程名称 asc

sql server jdbc查询日期时间列

【中文标题】sql server jdbc查询日期时间列【英文标题】:sql server jdbc query on datetime column 【发布时间】:2012-08-30 17:59:45 【问题描述】:

我环顾四周,似乎找不到在 SO 上专门提出的问题,但我发现了类似的问题,例如 this one 以及许多关于 SQL 本身或 C# 的问题...

这是我所看到的:

MapSqlParameterSource parameterSource = new MapSqlParameterSource();
        //parameterSource.addValue( "insertDate", DateTime.now().minusHours( 1 ).toGregorianCalendar(), Types.TIME );
        parameterSource.addValue( "insertDate", new Timestamp( DateTime.now().minusHours( 1 ).getMillis() ) );

        List< String > contents =
            _simpleJdbcTemplate
                .query(
                    "SELECT TOP (200) inserteddatetime, Contents FROM dbo.tsomeTable WHERE (ServiceName = 'something') and inserteddatetime > :insertDate",
                    new RowMapper< String >() 
                        @Override
                        public String mapRow( final ResultSet rs, final int rowNum ) throws SQLException 
                            System.out.println( rs.getTimestamp( "inserteddatetime" ) );

                            return rs.getString( "Contents" );
                        
                    , parameterSource );

查询“挂起”\什么都不做\从不返回,如果:

    我使用未注释的 Timestamp 对象(如上所示) 我将parameterSource 对象替换为DateTime.now().minusHours( 1 ).toGregorianCalendar()DateTime.now().minusHours( 1 ).toGregorianCalendar().getTime() 我尝试注释掉的行,但将类型更改为Timestamp

所以,这是我的一个或多个问题......

在 sql server 中查询日期时间列是否存在已知错误\问题?

为什么我必须使用Time 而不是Timestamp

当我直接查询对象时,我怀疑 Spring 将日期对象转换为 Timestamp(如 #2 所示)。

【问题讨论】:

我开发了几个由 SQLServer 2005/2008 支持的应用程序,并且日期/时间查询/列工作正常。包含用于创建表的 ddl 会很有帮助(对于 insertDatetime 的列类型)。 悬挂/永不返回对我来说听起来很可疑。您可以运行 Sql Server 跟踪并查看它在做什么吗? msdn.microsoft.com/en-us/library/ms175047.aspx 另外,您能否确认您使用的是带有 insertDate 而不是 TIMESTAMP 的日期时间列? 【参考方案1】:

    TIMESTAMP 是一个服务器生成的值,用于帮助data consistency,它不是一个简单的数据类型,所以对于storing datetime value,避免使用TIMESTAMP 数据类型。

    另外,SQL Server TIMESTAMP 是 confusing,它是 deprecated。它被ROWVERSION keyword 取代,这样可以减少混淆。

【讨论】:

以上是关于sql server查询问题。的主要内容,如果未能解决你的问题,请参考以下文章

组合查询时的 SQL-server 语法错误(传递查询)

sql-server 堆栈查询 sql 注入更新查询不起作用

sql server 2000查询分析器 指定数据库

提高 SQL Server 查询性能

查询分析器远程连接:sql server 不存在或拒绝访问

SQL Server 查询因 RODBC 连接而失败,在 SQL Server 中工作