0

我对更新声明有点困惑,但这就是我所拥有的:我有这两名员工及其各自的字母数字代码。

select * from cm.bo.hotlist('08Z')
where State = 'ca'

select * from cm.bo.hotlist('06D')
where State = 'ca'

该表具有与每个员工关联的某些城市,顶部选择语句具有与“08Z”关联的这些城市列表......比方说。

New York
Chicago

我想将这些城市移至员工“06D”

我将如何更新?

对我来说令人困惑的部分是 table 是一个表值函数。

任何帮助将不胜感激。谢谢你。

也许是这样的:

update CITY cm.bo.hotlist('06D')

where CITY in (New York, Chicago)
4

2 回答 2

4

所以你想要的是:

Update cm.bo.hotlist('08Z')
set
<EmployeeID Column> = '06D'
where
city in ('New York', 'Chicago')

对于来到这里的每个人来说,是的,只要底层数据集是可更新的,内联表值函数就是可更新的。代码示例:

IF EXISTS(select * from sys.objects where name = 'test' and schema_id = schema_id('dbo')) BEGIN DROP TABLE dbo.test; END

CREATE TABLE dbo.test(Employee varchar(10), city varchar(10));

CREATE FUNCTION [dbo].[getEmployeeCities] ( @employee varchar(10) RETURNS TABLE  AS
RETURN  (  SELECT * from test where employee = @employee );

insert into dbo.test select 'A', 'Chicago';
insert into dbo.test select 'B', 'New York';

select * from dbo.test;

update dbo.getEmployeeCities('A')
set Employee = 'B'
where city = 'Chicago';

select * from dbo.test;
于 2013-05-15T15:07:19.173 回答
0

更新表名 SET 使用 ='06D' where CITY IN ('NEW York', 'Chicago')

于 2013-05-15T15:07:59.017 回答