一 简单查询
简单的Transact SQL查询只包括选择列表 FROM子句和WHERE子句 它们分别说明所查询列 查询的
表或视图 以及搜索条件等
例如 下面的语句查询testtable表中姓名为 张三 的nickname字段和email字段
SELECT nickname emailFROM testtable
WHERE name= 张三
(一) 选择列表
选择列表(select_list)指出所查询列 它可以是一组列名列表 星号 表达式 变量(包括局部变
量和全局变量)等构成
选择所有列
例如 下面语句显示testtable表中所有列的数据
SELECT *FROM testtable
选择部分列并指定它们的显示次序
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同
例如
SELECT nickname emailFROM testtable
更改列标题
在选择列表中 可重新指定列标题 定义格式为
列标题=列名
列名 列标题
如果指定的列标题不是标准的标识符格式时 应使用引号定界符 例如 下列语句使用汉字显示列
标题
SELECT 昵称=nickname 电子邮件=email
FROM testtable
删除重复行
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行 默认
为ALL 使用DISTINCT选项时 对于所有重复的数据行在SELECT返回的结果集合中只保留一行
限制返回的行数
使用TOP n [PERCENT]选项限制返回的数据行数 TOP n说明返回n行 而TOP n PERCENT时 说明n是
表示一百分数 指定返回的行数等于总行数的百分之几
例如
SELECT TOP *FROM testtableSELECT TOP PERCENT *FROM testtable
(二) FROM子句
FROM子句指定SELECT语句查询及与查询相关的表或视图 在FROM子句中最多可指定 个表或视图
它们之间用逗号分隔
在FROM子句同时指定多个表或视图时 如果选择列表中存在同名列 这时应使用对象名限定这些列
所属的表或视图 例如在usertable和citytable表中同时存在cityid列 在查询两个表中的cityid时应
使用下面语句格式加以限定
SELECT username citytable cityidFROM usertable citytableWHERE usertable cityid=citytable cityid
在FROM子句中可用以下两种格式为表或视图指定别名
表名 as 别名
表名 别名
例如上面语句可用表的别名格式表示为
SELECT username b cityidFROM usertable a citytable bWHERE a cityid=b cityid
SELECT不仅能从表或视图中检索数据 它还能够从其它查询语句所返回的结果集合中查询数据
例如
SELECT a au_fname+a au_lnameFROM authors a titleauthor ta(SELECT title_id titleFROM titlesWHERE ytd_sales>) AS tWHERE a au_id=ta au_idAND ta title_id=t title_id
此例中 将SELECT返回的结果集合给予一别名t 然后再从中检索数据
(三) 使用WHERE子句设置查询条件
WHERE子句设置查询条件 过滤掉不需要的数据行 例如下面语句查询年龄大于 的数据
SELECT *FROM usertableWHERE age>
WHERE子句可包括各种条件运算符
比较运算符(大小比较) >>= = <<= <>!>!<
范围运算符(表达式值是否在指定的范围) BEEEN…AND…
NOT BEEEN…AND…
列表运算符(判断表达式是否为列表中的指定项) IN (项 项 ……)
NOT IN (项 项 ……)
lishixinzhi/Article/program/SQL/201311/16245select
userid,
totaljifen=sum(totaljifen)
from
usercodelist
inner
join
usercodeexcel
--
这里有点奇怪
--
2表关联条件,
是
时间条件,
还是相等的比较
--
你确定
usercodelist
里面的每一行数据,
在
usercodeexcel
里面,都有一行是
时间完全一样的么?
--
会不会是要修改为
on
usercodeexcel.LastTime
<
usercodelist.etime
on
usercodeexcel.LastTime
=
usercodelist.etime
where
--
看这里,
筛选的条件是
UserCodeExcel.lasttime
要是
最近
1个月内的数据.
--
应该没有问题.
datediff(month,UserCodeExcel.lasttime,getdate())=1
group
by
userid
order
by
totaljifen
desc
SUBSTRING(str,pos):由<str>中,选出所有从第<pos>位置开始的字元。请注意,这个语法不适用于SQL
Server上。
SUBSTRING(str,pos,len):
由<str>中的第<pos>位置开始,选出接下去的<len>个字元。
就是从你要查的字段中,从第5位开始,截取1位,比如说单词asdfVgg,这样就取出一个V来,作为一个条件就可以查询了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)