SQL求助:想创建一个表,但在创建前先判断是不是存在。如存在就删除它,不存在就创建。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL求助:想创建一个表,但在创建前先判断是不是存在。如存在就删除它,不存在就创建。相关的知识,希望对你有一定的参考价值。
参考技术A1、创建对象时,如果没有指定Schema,就会挂在默认的Schema dbo下面。
2、User下面的有一个叫dbo的User,Schema下面有一个叫dbo的Schema,就像上面所述,前者是一个User,是用来管理授权的,后者是一个Schema,是用来分组数据库对象的,所以对象名称前面的Schema,如:dbo.table1,其中的dbo指的是Schema。
3、右键点击Schemas节点,点击菜单中的"New Schema",在创建Schema对话框中输入Schema的名称,如:demo,Schema Owner可以不指定,默认为dbo这个User,点确定创建Schema。
4、在创建表时,在表前面加上Schema名称,就可以创建,具体的SQL如下:create table demo.table1(f1 varchar(30))。
5、刷新左侧对象浏览器,可以看到新建的table1的Schema是demo,查看table1的属性,也可以看到Schema是demo。
6、使用非dbo Schema的表时,需要在表前面加上Schema名称,不然可能会出错。
使用 SQL 判断一个相关表的所有记录是不是具有相同的值
【中文标题】使用 SQL 判断一个相关表的所有记录是不是具有相同的值【英文标题】:Using SQL to determine if all records of a related table have the same value使用 SQL 判断一个相关表的所有记录是否具有相同的值 【发布时间】:2013-04-24 10:41:40 【问题描述】:我正在尝试创建一个存储过程,该过程将根据相关表中的某些值更新一个表上的记录:
MainTable 包含一个 status 字段,并且与 SubTable 相关,SubTable 也有一个 status 字段。我需要更新 MainTable 中每条记录的状态,其中 SubTable 中的所有相关记录都具有相同的状态 x。我已经尝试了几个查询,但认为我以错误的方式处理它。任何帮助将不胜感激。谢谢。
【问题讨论】:
您的表格是否通过status
字段链接?
【参考方案1】:
例如有以下表格:
Producer ( Code,Name,Status)
Goods ( GCode,PCode( Producer Code),Name,Status)
和查询:
Update Producer set Status=F
where not exists (select * from Goods where Status <> X and Goods.PCode= Producer.Code)
【讨论】:
谢谢!这似乎是我所追求的!我只是想再做一些测试以确保!【参考方案2】:试试这个:
Update schema.yourtable s set s.fieldtoupdate = (
Select e.Relationalfield from schema.RealtionalTable e where e.STATUSFIELD = s.STATUSFIELD);
希望对你有帮助
【讨论】:
感谢 Stanley,我已尝试过您的查询,但无法正常工作。我是这样尝试的(由于查询窗口的错误,不得不稍微调整一下):Update MainTable SET MainTable.Status= ( Select e.SubTableStatus from SubTable e where e.SubTableStatus= 11);
基本上,如果 SubTable.SubTableStatus 中的所有记录都是 11,则 MainTable.Status 必须设置为 9。给出的错误是:'子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。'
您是说状态字段不是唯一值吗?为此,状态字段必须是唯一值
不,状态不是唯一的,但我确实得到了我想要的,谢谢。但是,我确实有一个不同的问题,您的代码可以帮助解决。
啊好的很高兴你能得到帮助。以上是关于SQL求助:想创建一个表,但在创建前先判断是不是存在。如存在就删除它,不存在就创建。的主要内容,如果未能解决你的问题,请参考以下文章
sqlserver中如何判断一个约束是不是存在?就像判断一个表或库是不是存在一样。
Java求助:如何判断某对象是不是存在?如果不存在,创建该对象