sql比较本地多个sql 多数据库查询中的多张表

Oracle/SQL Server/SQLite 判断某张表是否存在的SQL语句_数据库技术_Linux公社-Linux系统门户网站
你好,游客
Oracle/SQL Server/SQLite 判断某张表是否存在的SQL语句
来源:Linux社区&
作者:iegyiy
简单实用的/SQL Server/SQLite 判断某张表是否存在的SQL语句。
SELECT COUNT(*) as count FROM all_tables WHERE table_name= 'tablename' 不存在返回0
2.Sqlserver
SELECT COUNT(*) FROM sys.objects WHERE object_id = OBJECT_ID(N'tablename') AND type in (N'U') 不存在放回0
SELECT COUNT(*) as count FROM sqlite_master WHERE type='table' and name= 'tablename' 不存在放回0
相关资讯 & & &
& (01/21/:58)
& (08/02/:02)
& (03月08日)
& (11/08/:58)
& (07/26/:27)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款多张表的左联接查询解决办法_Sql Server大全_优良自学吧 |
当前位置: >
> 多张表的左联接查询解决办法优良自学吧提供多张表的左联接查询解决办法,多张表的左联接查询要求:添加查询列,rdrecords.iQuantity as 入库数量,RdRecord.dDate as 入库时间,dispatchlist.dDate as 发货时间,sum(rdrecords.iQuantity) as 累计入库数量这是一个视图的查询语句,需添加以上四多张表的左联接查询要求:添加查询列,rdrecords.iQuantity as 入库数量,RdRecord.dDate as 入库时间,dispatchlist.dDate as 发货时间,sum(rdrecords.iQuantity) as 累计入库数量这是一个视图的查询语句,需添加以上四个数据列,分别在表rdrecords收发记录子表,rdrecord收发记录主表,dispatchlist发货单主表,条件:rdrecord.id=rdrecords.dispatchlist.cdlcode=so_somain.cdlcode
其中cdlcode为销售订单号,so_somain.cdlcode指销售订单主表中的销售订单号原有代码:SELECT SO_SOMain.cSOCode AS 订单号,SO_SOMain.dDate AS 受订日期 , SO_SOMain.cBusType as 业务类型 ,SO_SOMain.cSTCode as 销售类型编号,& Customer.cCCCode as 客户类编码, Customer.cCuscode AS 客户编码,Customer.cCusAbbName AS 客户简称 , Customer.cCusName as 客户,& Department.cDepName AS 部门, Person.cPersonName AS 业务员,convert(varchar(30),Ap_Order.iAmount_f) as 订单预收款原币, convert(varchar(30),Ap_Order.iAmount) as 订单预收款本币, convert(varchar(30), Ap_Order.iRAmount_f) as 订单预收余额原币, convert(varchar(30),Ap_Order.iRAmount) as 订单预收余额本币, SO_SOMain.cCusOAddress AS 发货地址, SO_SOMain.cexch_name AS 外币名称,& SO_SOMain.iExchRate AS 外币汇率, SO_SOMain.iTaxRate AS 税率, SO_SOMain.cMemo AS 备注, SO_SOMain.cMaker AS 制单人, & SO_SOMain.cVerifier as 审核人, dbo.SO_SOMain.cCloser AS 关闭人, SO_SOMain.cDefine1, SO_SOMain.cDefine2, SO_SOMain.cDefine3,& SO_SOMain.cDefine4, SO_SOMain.cDefine5, SO_SOMain.cDefine6, SO_SOMain.cDefine7, SO_SOMain.cDefine8, SO_SOMain.cDefine9,SO_SOMain.cDefine10,SO_SOMain.cDefine11,SO_SOMain.cDefine12,SO_SOMain.cDefine13,SO_SOMain.cDefine14,SO_SOMain.cDefine15,SO_SOMain.cDefine16,Inventory.cInvCCode as 存货类编码,case when Inventory.bService=1 then '是' else '否' end as 是否劳务,Inventory.cInvCode as 存货编码,Inventory.cInvaddCode as 存货代码,Inventory.cInvName as 存货,Inventory.cInvStd as 规格,SO_SODetails.cFree1,SO_SODetails.cFree2,SO_SODetails.dPreDate as 预发货日期,SO_SODetails.iQuantity as 数量,SO_SODetails.iNum AS 件数,SO_SODetails.iTaxUnitPrice AS 含税单价,SO_SODetails.iUnitPrice AS 无税单价,SO_SODetails.iMoney AS 无税金额,SO_SODetails.iTax AS 税额, &SO_SODetails.iSum AS 价税合计, SO_SODetails.iDisCount AS 折扣, SO_SODetails.iNatUnitPrice AS 本币单价, SO_SODetails.iNatMoney AS 本币金额,& SO_SODetails.iNatTax AS 本币税额, SO_SODetails.iNatSum AS 本币价税合计, SO_SODetails.iNatDisCount AS 本币折扣,& SO_SODetails.iFHQuantity AS 累计发货数量, SO_SODetails.iFHNum AS 累计发货件数, SO_SODetails.iQuantity - isnull(iFHQuantity,0) as 未发货数量,& SO_SODetails.iFHMoney AS 累计发货金额, SO_SODetails.iSum-isnull(iFHMoney,0) as 未发货金额, SO_SODetails.iKPQuantity AS 累计开票数量,& SO_SODetails.iKPNum AS 累计开票件数, SO_SODetails.iKPMoney AS 累计开票金额, SA_BillSK.iExchSum AS 累计收款原币 ,& SA_BillSK.iMoneySum AS 累计收款, cccc.iFoNum as 累计出库件数,cccc.iFoQuantity as 累计出库数量,ddd.FTotalPrice as 累计出库金额,& sumPOMain.fquantity as 生产下单数量, sumPOMain.finquantity as 产成品入库数量, Convert ( varchar (20) , SO_SOMAIN.ID ) as ID,customer.ccusdefine1,customer.ccusdefine2,customer.ccusdefine3,customer.ccusdefine4,customer.ccusdefine5,customer.ccusdefine6,customer.ccusdefine7,customer.ccusdefine8,customer.ccusdefine9,customer.ccusdefine10,customer.ccusdefine11,customer.ccusdefine12,customer.ccusdefine13,customer.ccusdefine14,customer.ccusdefine15,customer.ccusdefine16,SO_SODetails.cfree3,SO_SODetails.cfree4,SO_SODetails.cfree5,SO_SODetails.cfree6,SO_SODetails.cfree7,SO_SODetails.cfree8,SO_SODetails.cfree9,SO_SODetails.cfree10,inventory.cinvdefine1,inventory.cinvdefine2,inventory.cinvdefine3,inventory.cinvdefine4,inventory.cinvdefine5,inventory.cinvdefine6,inventory.cinvdefine7,inventory.cinvdefine8,inventory.cinvdefine9,inventory.cinvdefine10,inventory.cinvdefine11,inventory.cinvdefine12,inventory.cinvdefine13,inventory.cinvdefine14,inventory.cinvdefine15,inventory.cinvdefine16,SO_SODetails.cdefine22,SO_SODetails.cdefine23,SO_SODetails.cdefine24,SO_SODetails.cdefine25,SO_SODetails.cdefine26,SO_SODetails.cdefine27,SO_SODetails.cdefine28,SO_SODetails.cdefine29,SO_SODetails.cdefine30,SO_SODetails.cdefine31,SO_SODetails.cdefine32,SO_SODetails.cdefine33,SO_SODetails.cdefine34,SO_SODetails.cdefine35,SO_SODetails.cdefine36,SO_SODetails.cdefine37 from Inventory&
LEFT OUTER JOIN SO_SODetails
ON inventory.cInvCode = SO_SODetails.cInvCode& RIGHT OUTER JOIN Customer& RIGHT OUTER JOIN SO_SOMain& LEFT OUTER JOIN Department ON SO_SOMain.cDepCode = Department.cDepCode ON Customer.cCusCode = SO_SOMain.cCusCode& LEFT OUTER JOIN Person ON SO_SOMain.cPersonCode = Person.cPersonCode ON SO_SODetails.cSOCode = SO_SOMain.cSOCode& LEFT OUTER JOIN
Ap_Order ON SO_SOMain.cSOCode=Ap_Order.cOrderID AND AP_ORDER.CFLAG='AR'& LEFT
JOIN sumPOMain ON sumPOMain.csosids like '%,' + cast(so_sodetails.isosid as varchar(30)) +',%' and sumPOMain.cinvcode=so_sodetails.cinvcode& LEFT
SA_SumOutQuantityNum_NS cccc ON
cccc.iSOsID = SO_SODetails.iSOsID& LEFT
SA_SumOutPrice_NS as ddd
ON ddd.iSOsID = SO_SODetails.iSOsID& LEFT OUTER JOIN SA_BillSK ON SA_BillSK.iSOsID = SO_SODetails.iSOsID------解决方案--------------------好复杂...看得眼都花了.
------解决方案--------------------
比较复杂啊!left join时如果上下表都和中间表有关系注意添加left join中间表的顺序,其他楼主按条件把表放上去,查字段吧!
------解决方案--------------------探讨好复杂...看得眼都花了.(本文来自互联网,不代表搜站(/)的观点和立场)编辑推荐最近更新sql2000下在同一数据库中创建多张表及数据的复制
如何在sql2000下在同一数据库中创建多张表,并完成表与表之间数据的复制及对表中数据的筛选:
如何在sql2000下在同一中创建多张表,并完成表与表之间数据的复制及对表中数据的筛选:
&&&在stuinfo数据库中创建表student1(sno,sname,ssex,sage,sdept),course1(cno,cname,cc),sc1(sno,cno,grade),并填入数据,完成下面的查询,将sql语句上传到ftp上。
答:先建立一个表student1,其结构为:
use stuinfo
create table student1
(sno varchar(30) not null,
sname varchar(30) not null,
ssex char(2) not null,
sage tinyint not null,
sdept varchar(50) not null
再建立另一个表course1:
use stuinfo
create table course1
(cno varchar(30) not null,
cname varchar(50) not null,
cc tinyint not null
最后再建立一个表sc1:
use stuinfo
create table sc1
(sno varchar(30) not null,
cno varchar(30) not null,
grade tinyint not null
填入数据就从student、course、sc分别往student1、course1、sc1里面拷入数据,其表示方法分别为:
往student里面插入数据:
insert into student1
select * from student
往course1里面插入数据:
insert into course1
select * from course
往sc1里面插入数据:
insert into sc1
select * from sc
1.查询所有学生的基本信息。
答:select * from student1
2.查询学分大于5分的课程信息。
select * from course1
where cc&5
3.查询所有学生的选课情况。
答:select * from sc1
4.查询年龄在17-20岁之间的学生的学号和姓名。
select sno,sname,sage from student1
where sage&17 and sage&20
5.查询学生成绩,及折合70%之后的成绩。
select sno '学号', cno '课程号', grade'成绩',grade*0.7 '折合成绩' from sc1
6.查询选了课程的学生的学号,要求去掉重复的。
答:select distinct sno from sc1
7.查询前10名学生的基本信息。
答:select top 10 * from student1
8.查询学生成绩在80到90之间的学生的学号。
select sno from sc1
where grade&80 and grade&90
9.查询学生成绩不在80到90之间的学生的学号。
select sno from sc1
where not grade&80 and grade&90
10.查询金融系和中文系的所有学生。
select * from student1
where sdept='金融系' and sdept='中文系'
11.查询计算机系、中文系的所有男学生。
select * from student1
where (sdept='计算机系' or sdept='中文系') and ssex='男'
12.查询医学系的女学生的学号和姓名。
select sno,sname from student1
where sdept='医学系'and ssex='女'
13.显示本地的SQL Server的版本信息。
答:select @@version
14.显示本地的SQL Server的语言信息。
答:select @@language
更多精彩请前往:
(责任编辑:yangang)
------分隔线----------------------------
sql数据库如何能自动备份呢,今天it57.net的小编就来教大家如何在SQL SERVER 2005建立...
人们在使用sql时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略了不同的...
如何提高sql语言的查询效率?由于sql是面向结果而不是面向过程的查询语言,所以一般支...
如何在sql server 2000中用SQL语句创建多张表,并完成表与表之间的数据关联及数据筛选...
如何在sql2000下在同一数据库中创建多张表,并完成表与表之间数据的复制及对表中数据...
这也是我在很早以前做的实验练习题,在sql2000下用SQL语句向指定的数据库中的表插入指...此文章已被外星人劫持或被博主隐藏!当前位置: >
> SQL中on条件与where条件的区别数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的
SQL中on条件与where条件的区别数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的
pmeijin06 & at
SQL中on条件与where条件的区别
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。&&&& 在使用left jion时,on和where条件的区别如下:1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。&&&&& 假设有两张表:两条SQL:1、select * form tab1 left join tab2 on (tab1.size = tab2.size) where tab2.name=’AAA’2、select * form tab1 left join tab2 on (tab1.size = tab2.size and tab2.name=’AAA’)&&&& 其实以上结果的关键原因就是left join,right join,full join的特殊性,不管on上的条件是否为真都会返回left或right表中的记录,full则具有left和right的特性的并集。 而inner jion没这个特殊性,则条件放在on中和where中,返回的结果集是相同的。SQL Server 查询处理中的各个阶段(SQL执行顺序)SQL 不同于与其他编程语言的最明显特征是处理代码的顺序。在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理。&&&&& 每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只是最后一步生成的表才会返回 给调用者。如果没有在查询中指定某一子句,将跳过相应的步骤。下面是对应用于SQL server 2000和SQL Server 2005的各个逻辑步骤的简单描述。(8)SELECT (9)DISTINCT& (11)&Top Num& &select list&(1)FROM [left_table](3)&join_type& JOIN &right_table&(2)&&&&&&& ON &join_condition&(4)WHERE &where_condition&(5)GROUP BY &group_by_list&(6)WITH &CUBE | RollUP&(7)HAVING &having_condition&(10)ORDER BY &order_by_list&逻辑查询处理阶段简介FROM:对FROM子句中的前两个表执行笛卡尔积(Cartesian product)(交叉联接),生成虚拟表VT1ON:对VT1应用ON筛选器。只有那些使&join_condition&为真的行才被插入VT2。OUTER(JOIN):如 果指定了OUTER JOIN(相对于CROSS JOIN 或(INNER JOIN),保留表(preserved table:左外部联接把左表标记为保留表,右外部联接把右表标记为保留表,完全外部联接把两个表都标记为保留表)中未找到匹配的行将作为外部行添加到 VT2,生成VT3.如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表为止。WHERE:对VT3应用WHERE筛选器。只有使&where_condition&为true的行才被插入VT4.GROUP BY:按GROUP BY子句中的列列表对VT4中的行分组,生成VT5.CUBE|ROLLUP:把超组(Suppergroups)插入VT5,生成VT6.HAVING:对VT6应用HAVING筛选器。只有使&having_condition&为true的组才会被插入VT7.SELECT:处理SELECT列表,产生VT8.DISTINCT:将重复的行从VT8中移除,产生VT9.ORDER BY:将VT9中的行按ORDER BY 子句中的列列表排序,生成游标(VC10).TOP:从VC10的开始处选择指定数量或比例的行,生成表VT11,并返回调用者。注:步骤10,按ORDER BY子句中的列列表排序上步返回的行,返回游标VC10.这一步是第一步也是唯一一步可以使用SELECT列表中的列别名的步骤。这一步不同于其它步骤的 是,它不返回有效的表,而是返回一个游标。SQL是基于集合理论的。集合不会预先对它的行排序,它只是成员的逻辑集合,成员的顺序无关紧要。对表进行排序 的查询可以返回一个对象,包含按特定物理顺序组织的行。ANSI把这种对象称为游标。理解这一步是正确理解SQL的基础。因为这一步不返回表(而是返回游标),使用了ORDER BY子句的查询不能用作表表达式。表表达式包括:视图、内联表值函数、子查询、派生表和共用表达式。它的结果必须返回给期望得到物理记录的客户端应用程序。例如,下面的派生表查询无效,并产生一个错误:select * from(select orderid,customerid from orders order by orderid) as d下面的视图也会产生错误create view my_viewasselect *from ordersorder by orderid&&&&& 在SQL中,表表达式中不允许使用带有ORDER BY子句的查询,而在T—SQL中却有一个例外(应用TOP选项)。&&&&& 所以要记住,不要为表中的行假设任何特定的顺序。换句话说,除非你确定要有序行,否则不要指定ORDER BY 子句。排序是需要成本的,SQL Server需要执行有序索引扫描或使用排序运行符。&&&&& 推荐一段SQL代码:行列转置&&&&& /*问题:假设有张学生成绩表(tb)如下:姓名 课程 分数张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94想变成(得到如下结果): 姓名 语文 数学 物理 ---- ---- ---- ----李四 74&& 84&& 94张三 74&& 83&& 93-------------------*/ create table tb(姓名 varchar(10),课程 varchar(10),分数 int)insert into tb values('张三' , '语文' , 74)insert into tb values('张三' , '数学' , 83)insert into tb values('张三' , '物理' , 93)insert into tb values('李四' , '语文' , 74)insert into tb values('李四' , '数学' , 84)insert into tb values('李四' , '物理' , 94)go --SQL SERVER 2000 静态SQL,指课程只有语文、数学、物理这三门课程。(以下同)select 姓名 as 姓名 ,& max(case 课程 when '语文' then 分数 else 0 end) 语文,& max(case 课程 when '数学' then 分数 else 0 end) 数学,& max(case 课程 when '物理' then 分数 else 0 end) 物理from tbgroup by 姓名
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-}

我要回帖

更多关于 sql 多数据库查询 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信