A. 用sql写有一个选课表和一个学生表,查询成绩最高的的学生的信息
select S.*
from 学生表 S,选课表 C
where S.学号=C.学号 and C.成绩 =(select MAX(成绩)from 选课表)
-----
上面的回答 where 后面可以接聚合函数??
select max (成绩) as 成绩
from 选课
where 学号=选课.学号
order by 学号
系统错误为除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效 ------------系统都告诉你了,子查询中使用order by 无效
除非跟top一起使用!你把order by 去掉或在子查询中加个top n 就行了
B. 派生表是什么意思
派生表是Microsoft公司新推出的SQL2005数据库的一个增强功能。它将子查询做为一个表来处理,这个由子查询得出的新表就是我们说的“派生表”。
C. sql'x%'处理和 '%x%'有啥区别,派生表是什么意思
'x%'是查询匹配以'x'开头的字符串
'%x%'是查询匹配字符串中有'x'字符的字符串
例如:'x%'能够匹配上'xa'
'%x%'能匹配上'axa','x%'就不行了
在多表查询的时候,用到的子查询就是派生表,就是把一个select 语句看作是一个表来进行操作
D. 筛选出sql 查询结果中 不包含某个字符
执行sql:select cardno,name from cardtable where cardno not in (select cardno from cardtable where name='C');嵌套一个子查询来查找包含name包含C的cardno,然后再根据查询条件把cardno不包含的剔除掉。
运行如下:
(4)sql子查询派生表扩展阅读
sql的嵌套查询包括hen多的子查询,in的子查询、带比较运算符的子查询、带any/all的子查询、带exists的子查询以及基于派生表的子查询,这些查询嵌套使用可以达到强大的功能,比如筛选,过滤,排序,去重等等。
E. 求大神,告诉我SQL中的派生表有什么用,用白话说下,谢谢详细一些!我非常不明白,还有相关子查询,跪
派生表:比如要查找一个叫张铁牛的人的信息,我们知道他是男性,为了缩小查找范围我把所有的男性都找出来,然后从这些男性中里面再去找张铁牛。这里男性的集合就相当于派生表,转成sql语句是这样select 姓名,住址,身份证 from (select * from 表名 where 性别='男性') t where 姓名='张铁牛'(这里只是为了举例子),这里的t这个数据集就是派生表,它是虚表,在数据库中不存在的,是我们构建的,在这里的目的是为了缩小数据的查找范围。
相关子查询:子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。比如:select * from 外表 where 姓名 in (select 姓名 from 内表 where 外表.姓名=内表.姓名),你看在括号里的sql语句,是与外表关联的。这里顺便说一下非相关子查询,还是以上面为例,如:select * from 外表 where 姓名 in (select 姓名 from 内表 where 外表.姓名='张铁牛'),你看这个语句中括号里的sql语句,它是单独执行的,与外表没有任何关联,它只执行一次,执行完后将结果集传递给外部查询使用。
这里只是表面上描述了一下,内部还有其他区别,lz需要通过联系体会,有问题再追问,望采纳。
F. SQL语句中如果有order by 后为什么不可以作为字表被其他表查询
表子查询(也叫派生表)中代表的是一个关系表,而关系表中的行是没有固定顺序的。因此,ANSI SQL不允许在表子查询中包含order by子句。
SQL Server大致遵守了这一规定,但有两个例外:当表子查询中有top或for xml子句时,可以包含order by子句。此时order by子句仅仅是为了筛选数据行,并不用于展示的目的。因此,子查询的结果不能保证是有序的。
G. 关于ASP中SQL语句查询排序的问题
不能又升序,又降序的...
按学号降序:
SELECT score FROM class order by num desc
按成绩升序:
select score from class order by score asc
ORDER BY 子句
指定结果集的排序。除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。
语法
[ ORDER BY { order_by_expression [ ASC | DESC ] } [ ,...n ] ]
参数
order_by_expression
指定要排序的列。可以将排序列指定为列名或列的别名(可由表名或视图名限定)和表达式,或者指定为代表选择列表内的名称、别名或表达式的位置的负整数。
可指定多个排序列。ORDER BY 子句中的排序列序列定义排序结果集的结构。
ORDER BY 子句可包括未出现在此选择列表中的项目。然而,如果指定 SELECT DISTINCT,或者如果 SELECT 语句包含 UNION 运算符,则排序列必定出现在选择列表中。
此外,当 SELECT 语句包含 UNION 运算符时,列名或列的别名必须是在第一选择列表内指定的列名或列的别名。
说明 在 ORDER BY 子句中不能使用 ntext、text 和 image 列。
ASC
指定按递增顺序,从最低值到最高值对指定列中的值进行排序。
DESC
指定按递减顺序,从最高值到最低值对指定列中的值进行排序。
空值被视为最低的可能值。
对 ORDER BY 子句中的项目数没有限制。然而,对于排序操作所需的中间级工作表的大小有 8,060 字节的限制。这限制了在 ORDER BY 子句中指定的列的合计大小。
H. sqlserver 创建视图失败,原因:ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效
sqlserver中创建视图时,as下不能出现order by
其实你要排序的话可以对视图进行排序嘛,没必要在视图创建时候就排序
--创建视图
create view v$_emp_1
as
select * from emp
where emp.sal > (select min(sal) from emp)
--查询视图
select * from v$_emp_1 order by sal--这儿排序不就行了嘛~~~采纳哦