SQL动态查询在数据库中经常用的到,下面就将为您举例说明SQL动态查询的使用,希望对您学习SQL动态查询有所帮助。
今天做了一个根据动态生成表明来查询相关结果的存储过程,由于表名是动态生成,因此使用了SQL Server的动态查询,函数sp_executesql。需要统计的表是根据规则动态生成,格式如下:
因此在这里考虑使用SQL提供的sp_executesql 函数,它可以执行动态的修改,查询,删除功能。该函数官方详细文档,如下:
Sp_executesql:执行可以多次重复使用或动态生成的 Transact-SQL 语句或批处理。Transact-SQL 语句或批处理可以包含嵌入参数。
语法 :
【编辑推荐】
使用SQL语句查询时间段
巧用SQL语句删除重复记录
sql存储过程和动态sql的比较
您了解三类SQL存储过程
SQL修改列及表名的问题
sql分组查询
-- SQLSERVER 语句 select ,(case when 0 then(select count(*)From record r1 where 1 = and = 0) else(select count(*) from record r1 where 2 = and = 0) end) as 及格,(case when 0 then(select count(*)from record r1 where 1 = and = 1) else(select count(*) from record r1 where 2 = and = 1) end) as 良,(case when 0 then(select count(*)from record r1 where 1 = and = 2) else(select count(*) from record r1 where 2 = and = 2) end) as 优秀from CLASS c ---OracLE 写法 select , (decode(,0,(select count(*)from record r1 where 1 = and = 0), (select count(*) from record r1 where 2 = and = 0)))jige, (decode(,0,(select count(*)from record r1 where 1 = and = 1), (select count(*) from record r1 where 2 = and = 1)))liang, (decode(,0,(select count(*)from record r1 where 1 = and = 2), (select count(*) from record r1 where 2 = and = 2)))youxiu from CLASS c
SQL语句完成以下查询,急了~~~
答案来啦!~~!一定要采纳!
(1) CREATE TABLE 职工 (
职工号 CHAR(8) PRIMARY key,
姓名 CHAR (8) NOT NULL,
年龄 SMALLINT,
性别 CHAR (2),
CONSTRAINT C1 CHECK (性别 IN (男, 女)))
CREATE TABLE 社会团体 (
编号 CHAR(8) PRIMARY KEY,
名称 CHAR(8) NOT NULL,
负责人 CHAR(8),
活动地点 VARCHAR(50),
CONSTRAINT C2 FOREIGN KEY(负责人) REFERENCES 职工(职工号))
CREATE TABLE 参与 (
职工号 CHAR(8),
编号 CHAR(8),
CONSTRAINT C3 PRIMARY KEY(职工号,编号),
CONSTRAINT C4 FOREIGN KEY (职工号) REFERENCES 职工(职工号))
(2) CREATE VIEW 社团负责人(编号, 名称, 负责人职工号, 负责人姓名, 负责人性别)
AS SELECT 编号, 名称, 负责人, 姓名, 性别
FROM 社会团体, 职工
WHERE 社会团体.负责人=职工.职工号
FROM 职工, 社会团体, 参与
WHERE 职工.职工号=参与.职工号 AND 参与.编号=社会团体.编号
(3) SELECT DISTINCT 职工.职工号, 姓名
FROM 职工, 社会团体, 参与
WHERE 职工.职工号=参与.职工号 AND 参与.编号=社会团体.编号
AND 社会团体.名称 IN(羽毛球队,秧歌队,冬泳队)
(4) SELECT 职工号, 姓名
FROM 职工
WHERE 职工号 IN
(SELECT 职工号
FROM 参与
WHERE 编号 IN
(SELECT 编号
FROM 社会团体
WHERE 名称=冬泳队))
AND 年龄>50
(5) SELECT 编号, 名称
FROM 社会团体
WHERE 负责人 IS NULL
(6) SELECT *
FROM 职工
WHERE NOT EXISTS (
FROM 参与
WHERE 参与.职工号=职工.职工号)
(7) SELECT AVG(年龄)
FROM 职工
WHERE 姓名 LIKE 李% AND 性别=男 AND EXISTS (

FROM 参与
WHERE 参与.职工号=职工.职工号)
(8) SELECT *
FROM 职工 AS E1
WHERE E1.姓名<>肖波 AND EXISTS
(SELECT J1.编号
FROM 参与 AS J1
WHERE J1.职工号=E1.职工号 AND J1.编号 = ANY
(SELECT J2.编号
FROM 职工 AS E2, 参与 AS J2
WHERE E2.职工号=J2.职工号 AND E2.姓名=肖波))
(9) SELECT *
FROM 职工
WHERE ((年龄 BETWEEN 45 AND 55) AND 性别=女) OR
((年龄 BETWEEN 50 AND 60) AND 性别=男)
(10) SELECT *
FROM 职工
WHERE NOT EXISTS (
FROM 参与
WHERE NOT EXISTS (
FROM 社会团体
WHERE 参与.职工号=职工.职工号 AND 参与.编号=社会团体.编号))
(11) SELECT 职工号
FROM 职工
WHERE NOT EXISTS (
FROM 参与 AS 参与1
WHERE 参与1.职工号=0001 AND NOT EXISTS(
FROM 参与 AS 参与2
WHERE 参与2.编号=参与1.编号 AND参与2.职工号=职工.职工号))
(12) SELECT 姓名
FROM 职工
WHERE 年龄>(
SELECT 年龄
FROM 职工, 社会团体
WHERE 社会团体.负责人=职工.职工号 AND 社会团体.名称=秧歌队)
(13) SELECT 姓名
FROM 职工
WHERE 年龄>ALL(
SELECT 年龄
FROM 职工, 社会团体,参与
WHERE 社会团体.编号=参与.编号 AND 职工.职工号=参与.职工号
AND 社会团体.名称=秧歌队)
(14) SELECT 社会团体.名称 ,COUNT(参与.职工号)
FROM 社会团体,参与
WHERE 社会团体.编号=参与.编号
GROUP BY 参与.编号,社会团体.名称
(15) SELECT 社会团体.名称, COUNT(参与.职工号)
FROM 社会团体, 参与
WHERE 社会团体.编号=参与.编号
GROUP BY 参与.编号,社会团体.名称
HAVING COUNT(参与.职工号)<=ALL (
SELECT COUNT(参与.职工号)
FROM 参与
GROUP BY 参与.编号)
(16) SELECT 社会团体.名称, 职工.姓名
FROM 职工, 社会团体, 参与
WHERE 社会团体.编号=参与.编号
AND 社会团体.负责人=职工.职工号
GROUP BY 参与.编号,社会团体.名称, 职工.姓名
HAVING COUNT(参与.编号)>20
SQL四表查询
exec= select id,title,fid,showvideo from zm_video where school=1 and tuijian=1 union all select id,title,fid,shownews fromzm_news where school=1 and tuijian=1union all select id,title,fid,showdown from zm_down where school=1 and tuijian=1 union all select id,title,fid,showproduct from zm_product where school=1 and tuijian=1
使用union all 语句,然后建立记录集rs,rs(0)是取id,rs(1)是取title,rs(2)是取fid,rs(3)是取showvideo,shownews,showdown,showproduct,因为你要给不同的表加上不同的连接,这样就可以实现,直接调用rs(3)也就取得了不同的表相应的字符串。
union all语句就是把这四个表的记录合并为一个,但要注意的是要查询的字段数目必需相同
发表评论