❶ sql查询语句中,什么叫子查询
嵌套SELECT语句也叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值。子查询不但能够出现在Where子句中,也能够出现在from子句中,作为一个临时表使用,也能够出现在select list中,作为一个字段值来返回。
1、单行子查询 :单行子查询是指子查询的返回结果只有一行数据。当主查询语句的条件语句中引用子查询结果时可用单行比较符号(=, >, <, >=, <=, <>)来进行比较。
例:
select ename,deptno,sal
from emp
where deptno=(select deptno from dept where loc='NEW YORK');
2、多行子查询:多行子查询即是子查询的返回结果是多行数据。当主查询语句的条件语句中引用子查询结果时必须用多行比较符号(IN,ALL,ANY)来进行比较。其中,IN的含义是匹配子查询结果中的任一个值即可("IN" 操作符,能够测试某个值是否在一个列表中),ALL则必须要符合子查询的所有值才可,ANY要符合子查询结果的任何一个值即可。而且须注意ALL 和ANY 操作符不能单独使用,而只能与单行比较符(=、>、< 、>= 、<= 、<>)结合使用。
例:
1).多行子查询使用IN操作符号例子:查询选修了老师名叫Rona(假设唯一)的学生名字
sql> select stName
❷ 在SQL语句中,分组用什么子句,排序用什么子句
排序采用ORDER BY语句:ORDER BY 语句用于根据指定的列对结果集进行排序。ORDER BY 语句默认按照升序对记录行排序。如果希望按照降序对记录进行排序,可以使用 DESC关键字。
SQL有两种使用方式:
一是联机交互使用,这种方式下的SQL实际上是作为自含型语言使用的。
另一种方式是嵌入到某种高级程序设计语言(如C语言等)中去使用。前一种方式适合于非计算机专业人员使用,后一种方式适合于专业计算机人员使用。尽管使用方式不向,但所用语言的语法结构基本上是一致的。
(2)sql语句的子语句扩展阅读:
以同一种语法结构提供两种使用方式:
SQL既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接输入SQL命令对数据库进行操作。作为嵌入式语言,SQL语句能够嵌入到高级语言(如C、 C#、JAVA)程序中,供程序员设计程序时使用。
而在两种不同的使用方式下,SQL的语法结构基本上是一致的。这种以统一的语法结构提供两种不同的操作方式,为用户提供了极大的灵活性与方便性。
❸ 数据库 SQL语句 子查询执行过程
子查询执行过程,可以用以下例子来说明:
语句如下:
select*fromscorewheresidin(selectsidfromstudentwhere班级='一班')
在sql语句中,数据库先执行的是括号中的部分,得出student表中一班学生的sid,然后再在score表中选出sid为一班id的哪些学生的详细内容。
❹ 求SQL子查询语句
不用子查询就能出结果啊
select a.userid,a.name,sum(money) as money from a, b where a.userid=b.userid and freeze='true' group by a.userid,a.name
------------------
排序就在语句后加
order by a.userid asc
你查不到结果?
这个a.DeptID=1 是什么?不会是写错了吧
如果这个代表freeze的话。。。。一定要放到表b内!
==========================
Select a.UserID, a.Name, Sum(b.Money) As Money
From a, b
Where a.DeptID=1 And b.UserID=a.UserID And b.freeze='true'
Group By a.UserID, a.Name
order by a.userid asc
❺ SQL语句的SELECT语句中用于实现选择运算的子句是什么
1、SELECT DISTINCT 列名称 FROM 表名称,为student表内容。
❻ SQL语句中,子句不能使用列别名问题
当select的表达式很长时,我们经常会用as子句为该表达式指定别名,然而却发现无法在Where条件中直接使用该别名作为判断条件.
例如下面的SQL语句:
select id, (c1 + c2) as s from t1 where s > 100
运行会报错: “列名 s 无效”
当然,写成
select id, (c1 + c2) as s from t1 where (c1 + c2) > 100
就可以。
SQL语句中,为什么where子句不能使用列别名,而order by却可以?
在ORACLE中,select 语句的执行顺序是:
1. from语句
2. where语句(结合条件)
3. start with语句
4. connect by语句
5. where语句
6. group by语句
7. having语句
8. model语句
9. select语句
10. union、minus、intersect等集合演算演算
11. order by语句
在SQLServer中,select语句的执行顺序是:
(1)FROM JOIN ON
(2)WHERE
(3)GROUP BY
(4)HAVING
(5)SELECT DISTINCT TOP()
(6)ORDER BY
由select语句的执行顺序,我们可以发现在where子句执行的时候,取别名的语句还没执行,即该别名不存在,自然就不能使用了,而order by的时候别名就已经命名好了。
我们还可以知道:如果在from子句中指定了表别名,那么它所在的select 语句中其他子句都必须使用表别名来代替原始的表名,因为from子句是select语句中最先被执行的。
❼ SQL语句中insert子句问题
第一句中: <form id="form1" name="form1" method="post" action(这里表示这个form里的数据是提交到insert.asp页面处理)="insert.asp?action(这个action是个变量名称)=insert"> 第二句中: action(这是个变量名称)=request.QueryString("action(这里即是第一句中的变量名称)"),结果即是:action="insret"
❽ SQL语句有哪些常用子句
1.说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
方法一:select * into b from a where 1<>1
方法二:select top 0 * into b from a
2.注意:复制的新表中的所有字段都将没有默认值,即使源表中有设默认值
说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
3.说明:显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from a,(select max(adddate) adddate from table,a where table.title=a.title) b
4.说明:两张关联表,删除主表中在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
注意:
若将
select * from table2 where table1.field1=table2.field1
改为
select * from table1,table2 where table1.field1=table2.field1
多了一个table1
则删除不成功
5.说明:日程安排提前五分钟提醒
select * from 日程安排 where datediff(mi,开始时间,getdate())>5
6.说明:一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
7.说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
8.说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)
9.说明:随机取出10条数据
select top 10 * from tablename order by newid()
10.说明:随机选择记录
select newid()
11.说明:删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
12.说明:列出数据库里所有的表名
select name from sysobjects where type='U'
13.说明:列出表里的所有的
select name from syscolumns where id=object_id('TableName')
使用SQL语句 用...代替过长的字符串显示
语法:
SQL数据库:select case when len(field)>10 then left(field,10)+'...' else field end as news_name,news_id from tablename
Access数据库:SELECT iif(len(field)>2,left(field,2)+'...',field) FROM tablename;
--获得当月最后一天,时间全是0,如:2007-09-30 00:00:00.000
select dateadd(dd,-1,dateadd(mm,datediff(mm,0,dateadd(mm,1,getdate())),0))
--获得当月最后一天,时间为当前时间,如:2007-09-30 12:07:37.030
select dateadd(dd,-1,dateadd(mm,1,getdate()-day(getdate())+1))
--获得当月天数,如:30
select datediff(dd,getdate()-day(getdate())+1,dateadd(mm,1,getdate()-day(getdate())+1))
+++
Access2000 使用SQL语句联接表