如何将具有默认值的列添加到SQL Server 2000/SQL Server 2005中的现有表中?
我该怎么办SELECT * INTO [temp table] FROM [stored procedure]
?不FROM [Table]
,没有定义[temp table]
?
Select
所有数据都可以BusinessLine
正常tmpBusLine
工作.
select *
into tmpBusLine
from BusinessLine
Run Code Online (Sandbox Code Playgroud)
我尝试相同,但使用stored procedure
返回数据,并不完全相同.
select *
into tmpBusLine
from
exec getBusinessLineHistory '16 Mar 2009'
Run Code Online (Sandbox Code Playgroud)
输出消息:
消息156,级别15,状态1,行2关键字'exec'附近的语法不正确.
我已经阅读了几个创建一个与输出存储过程结构相同的临时表的例子,它工作正常,但不提供任何列会很好.
我需要使用其"父"表中的数据更新SQL Server 2005中的此表,如下所示:
拍卖
id (int)
udid (int)
assid (int)
Run Code Online (Sandbox Code Playgroud)
UD
id (int)
assid (int)
Run Code Online (Sandbox Code Playgroud)
sale.assid
包含要更新的正确值ud.assid
.
什么查询会这样做?我在考虑,join
但我不确定是否可能.
我希望这是关于如何使用SQL语句检查SQL Server 2000/2005中是否存在表的最终讨论.
当谷歌找到答案时,你会得到很多不同的答案.这样做是否有正式/后向和前向兼容的方式?
这有两种可行的方法.这两者中哪一个是标准/最佳方式?
第一种方式:
IF EXISTS (SELECT 1
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
AND TABLE_NAME='mytablename')
SELECT 1 AS res ELSE SELECT 0 AS res;
Run Code Online (Sandbox Code Playgroud)
第二种方式:
IF OBJECT_ID (N'mytablename', N'U') IS NOT NULL
SELECT 1 AS res ELSE SELECT 0 AS res;
Run Code Online (Sandbox Code Playgroud)
MySQL提供简单
SHOW TABLES LIKE '%tablename%';
Run Code Online (Sandbox Code Playgroud)
声明.我正在寻找类似的东西.
我正在使用以下代码检查临时表是否存在,如果存在,则在再次创建之前删除该表.只要我不更改列,它就可以正常工作.如果我稍后添加一列,则会显示错误"无效列".请让我知道我做错了什么.
IF OBJECT_ID('tempdb..#Results') IS NOT NULL
DROP TABLE #Results
CREATE TABLE #Results
(
Company CHAR(3),
StepId TINYINT,
FieldId TINYINT,
)
select company, stepid, fieldid from #Results
--Works fine to this point
IF OBJECT_ID('tempdb..#Results') IS NOT NULL
DROP TABLE #Results
CREATE TABLE #Results
(
Company CHAR(3),
StepId TINYINT,
FieldId TINYINT,
NewColumn NVARCHAR(50)
)
select company, stepid, fieldid, NewColumn from #Results
--Does not work
Run Code Online (Sandbox Code Playgroud) 我必须更新一个字段,其值由3个表的连接返回.
例:
select
im.itemid
,im.sku as iSku
,gm.SKU as GSKU
,mm.ManufacturerId as ManuId
,mm.ManufacturerName
,im.mf_item_number
,mm.ManufacturerID
from
item_master im, group_master gm, Manufacturer_Master mm
where
im.mf_item_number like 'STA%'
and im.sku=gm.sku
and gm.ManufacturerID = mm.ManufacturerID
and gm.manufacturerID=34
Run Code Online (Sandbox Code Playgroud)
我想更新mf_item_number
表的字段值item_master
与在上述条件中连接的其他值.
我怎样才能在MS SQL Server中执行此操作?
我知道我已经在几年前做过这个了,但是我记不起语法了,由于提取了大量关于"批量进口"的帮助文档和文章,我无法在任何地方找到它.
这是我想要做的,但语法不完全正确...请,之前做过这个的人,帮帮我:)
INSERT INTO dbo.MyTable (ID, Name)
VALUES (123, 'Timmy'),
(124, 'Jonny'),
(125, 'Sally')
Run Code Online (Sandbox Code Playgroud)
我知道这接近正确的语法.我可能在那里需要"BULK"这个词,或者其他东西,我不记得了.任何的想法?
我需要这个SQL Server 2005数据库.我试过这段代码,但无济于事:
DECLARE @blah TABLE
(
ID INT NOT NULL PRIMARY KEY,
Name VARCHAR(100) NOT NULL
)
INSERT INTO @blah (ID, Name)
VALUES (123, 'Timmy')
VALUES (124, 'Jonny')
VALUES (125, 'Sally')
SELECT * FROM @blah
Run Code Online (Sandbox Code Playgroud)
我越来越 Incorrect syntax near the keyword 'VALUES'.
我有一张桌子,我希望得到每组的最新条目.这是表格:
DocumentStatusLogs
表
|ID| DocumentID | Status | DateCreated |
| 2| 1 | S1 | 7/29/2011 |
| 3| 1 | S2 | 7/30/2011 |
| 6| 1 | S1 | 8/02/2011 |
| 1| 2 | S1 | 7/28/2011 |
| 4| 2 | S2 | 7/30/2011 |
| 5| 2 | S3 | 8/01/2011 |
| 6| 3 | S1 | 8/02/2011 |
Run Code Online (Sandbox Code Playgroud)
该表将按降序分组DocumentID
并按DateCreated
降序排序.对于每一个DocumentID
,我想获得最新状态.
我的首选输出:
| DocumentID | Status | DateCreated …
Run Code Online (Sandbox Code Playgroud) 使用MSSQL2005,如果我先截断子表(具有FK关系主键的表),是否可以截断具有外键约束的表?
我知道我也可以
DELETE
不带where子句然后RESEED
使用身份(或)我认为只要我在父母之前截断子表,我就可以不用上面的任何一个选项,但是我收到了这个错误:
无法截断表'TableName',因为它正被FOREIGN KEY约束引用.
在学习70-433考试的同时,我注意到你可以用以下两种方式之一创建覆盖索引.
CREATE INDEX idx1 ON MyTable (Col1, Col2, Col3)
Run Code Online (Sandbox Code Playgroud)
- 要么 -
CREATE INDEX idx1 ON MyTable (Col1) INCLUDE (Col2, Col3)
Run Code Online (Sandbox Code Playgroud)
INCLUDE条款对我来说是新的.为什么要使用它以及在确定是否使用INCLUDE子句创建覆盖索引时,您会建议使用什么准则?
sql-server-2005 ×10
sql-server ×9
t-sql ×7
sql ×5
sql-update ×2
alter-table ×1
foreign-keys ×1
group-by ×1
indexing ×1
insert ×1
temp-tables ×1
truncate ×1