1、SQL动态查询语句大全学习SQL应知道的动态SQL语句基本语法1 、普通SQL语句可以用Exec执行 9Kp=A CdaFr1 eg: Select * from tableName Wsc+A: 当然将字符串改成变量的形式也可 :? Gf%y declare fname varchar(20) rj XK3 set fname = FiledName -设置字段名 !i9mD!G w( IfnsP declare s varchar(1000) 7A _?mu set s = select + fname + from tableName ezCY_T9m Exec(s) - 成功 W=Q!
2、_X$ exec sp_executesql s - 此句会报错 vOwTKUb By4-_T+A 2#sv-v6oH declare s Nvarchar(1000) - 注意此处改为nvarchar(1000) A!?UOE set s = select + fname + from tableName (/Hv6n3Z& Exec(s) - 成功 ix9 Hh exec sp_executesql s - 此句正确 7UXt*w LBf0at0 3、输出参数 kz/7 E/A % +n p.MM7E declare num int, 3=CUh sqls nvarchar(4000) c
3、I) 10000 ) AS t WHERE a.au_id=ta.au_id AND ta.title_id=t.title_id此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。 (三) 使用WHERE子句设置查询条件 WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据: SELECT * FROM usertable WHERE age 20WHERE子句可包括各种条件运算符: 比较运算符(大小比较): 、 =、=、 、 =、 、! 、! =10 AND age 、 =、 =、 、! 和 。 3、自然连接:在连接条件中使用等于(=)运算
4、符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。 例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社: SELECT * FROM authors AS a INNER JOIN publishers AS p ON a.city=p.city又如使用自然连接,在选择列表中删除authors 和publishers 表中重复列(city和state): SELECT a.*,p.pub_id,p.pub_name,p.country FROM authors AS a INNER JOIN publishers
5、 AS p ON a.city=p.city(二)外连接 内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。如下面使用左外连接将论坛内容和作者信息连接起来: SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b ON a.username=b.username下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们
6、所在的城市: SELECT a.*,b.* FROM city as a FULL OUTER JOIN user as b ON a.username=b.username(三)交叉连接 交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等。 于6*8=48行。 SELECT type,pub_name FROM titles CROSS JOIN publishers
7、ORDER BY type Post=0/Post教你快速掌握一些异常精妙的SQL语句 发布时间:2008.03.11 04:58 来源:赛迪网作者:钱海歌【赛迪网IT技术报道】精妙的SQL语句: 复制表(只复制结构,源表名:a 新表名:b) SQL: select * into b from a where 11 拷贝表(拷贝数据,源表名:a 目标表名:b) SQL: insert into b(a, b, c) select d,e,f from b; 显示文章、提交人和最后回复时间 SQL: select a.title,a.username,b.adddate from table a
8、,(select max(adddate) adddate from table where table.title=a.title) b 说明:外连接查询(表名1:a 表名2:b) SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c日程安排提前五分钟提醒 SQL: select * from 日程安排 where datediff(minute,f开始时间,getdate()5 两张关联表,删除主表中已经在副表中没有的信息 SQL: delete from info where not ex
9、ists ( select * from infobz where info.infid=infobz.infid )说明: SQL: SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE FROM TABLE1,(SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND FROM TABLE2 WHERE TO_CHAR(UPD_DATE,YYYY/MM) = TO_CHAR(SYSDATE, Y
10、YYY/MM) X, (SELECT NUM, UPD_DATE, STOCK_ONHAND FROM TABLE2 WHERE TO_CHAR(UPD_DATE,YYYY/MM) = TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, YYYY/MM) ¦¦ /01,YYYY/MM/DD) - 1, YYYY/MM) ) Y, WHERE X.NUM = Y.NUM (+)AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) X.STOCK_ONHAND ) B WHERE A.NUM = B.NUM 说明: SQL:
11、select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名称=&strdepartmentname& and 专业名称=&strprofessionname& order by 性别,生源地,高考总成绩实例讲解SQL Server中Update的用法 发布时间:2008.02.28 05:07 来源:赛迪网作者:AlizzeSQL Server中Update的用法: 例子: 在表中有两个字段:id_no (varchar) , in_date (datetime) ,把in_date相同的记录的in_date依次累加1秒, 使in_date没有相同的记录。 以下为原始的数据: id_no in_date 5791 2003-9-1 14:42:02 5792 2003-9-1 14:42:02 5794 2003-9-1 14:42:02 5795 2003-9-1 14:42:03 5796 2003-9-1 14:42:03 5797 2003-9-1 14:42:03 5831 2003-9-1 14:42:04 5832 2003-9-1 14:42:14 5833 2003-9-1 14:42:14
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1