如何在sql server中进行有条件的查询

 我来答
我又强力了
2012-04-06 · TA获得超过802个赞
知道小有建树答主
回答量:1058
采纳率:0%
帮助的人:717万
展开全部
查询记录

--------------------------------------------------------------------------------

一般查询
SELECT [DISTINCT] <column1 [as new name] ,columns2,...>
FROM <table1>
[WHERE <条件>]
[GROUP BY <column_list>]
[HAVING <条件>]
[ORDER BY <column_list> [ASC|DESC]]

DISTINCT --表示隐藏重复的行 会去除所有要查询的列完全重复的行
WHERE --按照一定的条件查找记录
GROUP BY --分组查找(需要汇总时使用)
HAVING --分组的条件
ORDER BY --对查询结果排序
例:
select distinct sal ,empno,deptno from emp where deptno is not null group by deptno,empno,sal order by deptno;
select distinct deptno from emp;

要显示全部的列可以用*表示
例:
select * from emp;

WHERE 语句的运算符
where <条件1>AND<条件2> --两个条件都满足
例:
select * from emp where deptno=10 and sal>1000;

where <条件1>OR<条件2> --两个条件中有一个满足即可
例:
select * from emp where deptno=10 OR sal>2000;

where NOT <条件> --不满足条件的
例:
select * from emp where not deptno=10;

where IN(条件列表) --所有满足在条件列表中的记录
例:
select * from emp where empno in(7788,7369,7499);

where BETWEEN .. AND ..  --按范围查找
例:
select * from emp where sal between 1000 and 3000;

where 字段 LIKE --主要用与字符类型的字段
例1:
select * from emp where ename like '_C%'; --查询姓名中第二个字母是'C'的人
'-' 表示任意字符;
'%' 表示多字符的序列;

where 字段 IS [NOT] NULL --查找该字段是[不是]空的记录

汇总数据是用的函数
SUM --求和
例:
select deptno,sum(sal) as sumsal from emp GROUP BY deptno;

AVG --求平均值
MAX --求最大值
MIN --求最小值
COUNT --求个数

子查询
SELECT <字段列表> from <table_name> where 字段 运算符(<SELECT 语句>);

例:
select * from emp where sal=(select max(sal) from emp);

运算符
Any
例:
select * from emp where sal>ANY(select sal from emp where deptno=30) and deptno<>30;
--找出比deptno=30的员工最低工资高的其他部门的员工

ALL
select * from emp where sal>ALL(select sal from emp where deptno=30) and deptno<>30;
--找出比deptno=30的员工最高工资高的其他部门的员工

连接查询
SELECT <字段列表> from table1,table2 WHERE table1.字段=table2.字段


select empno,ename,dname from emp,dept where emp.deptno=dept.deptno;

查询指定行数的数据
SELECT <字段列表> from <table_name> WHERE ROWNUM<行数;
例:
select * from emp where rownum<=10;--查询前10行记录
注意ROWNUM只能为1 因此不能写 select * from emp where rownum between 20 and 30;
这中情况要使用子查询先小于30且将rownum这列显示 然后再使rownum大于20
例:
select * from (select rownum rnum,emp.* from emp where rownum<30) where rnum>20;

要查第几行的数据可以使用以下方法:
select * from emp where rownum<=30 and empno not in (select empno from emp where rownum<=20);
结果可以返回整个数据的20-30行;
不过这种方法的性能不高;
micro0369
2012-04-06 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4069万
展开全部
where 字段 = '值' and 字段2 like '值%'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式