首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Server删除和替换表中的条目

使用Server删除和替换表中的条目
EN

Stack Overflow用户
提问于 2014-07-10 16:00:43
回答 3查看 560关注 0票数 1

我有一个哺乳动物属性表,包含以下元素;

代码语言:javascript
复制
MammalAttributeID AttributeID MammalID

有些哺乳动物的属性记录为“猫”(AttributeID 234),有些哺乳动物的属性记录为“猫”(AttributeID 456),有些哺乳动物有“猫”和“猫”的属性记录。

我们希望将哺乳动物属性表中的"cat“属性替换为"cat”,并删除“cat”属性。因此,如果一只哺乳动物只有“猫”属性记录,它将保持不变。如果它同时具有"cat“和"cat”属性记录,则删除“cat”属性记录。

如果只有"cat“属性记录,则插入"cat”属性记录,并删除“cat”属性记录。

我无法用必要的SQL来完成这一任务。某个SQL专家能为我指明正确的方向吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-10 17:15:45

我认为Olgas的反应会忽略哺乳动物是猫而不是猫的情况,因为删除是先发生的。

代码语言:javascript
复制
--update cats to felines
Update "mammal attribute table"
set AttributeID = 456 
where AttributeID=234

go 

--delete cat attribute
delete from attributetable where AttributeID=234
go 

--delete duplicate feline attribute
delete 
from "mammal attribute table" 
where mammalattributeid in(
        select max(mammalattributeid)
        from "mammal attribute table" 
        group by mammalid,attributeid
        having count(*)>1)
票数 2
EN

Stack Overflow用户

发布于 2014-07-10 17:08:54

步骤1.删除带有“cat”属性的行,用于具有“猫”属性的哺乳动物。

代码语言:javascript
复制
DELETE FROM [YOUR_TABLE]
WHERE MammalID in 
(SELECT MammalID FROM [YOUR_TABLE] WHERE AttributeID = 234 -- cat
INTERSECT
SELECT MammalID FROM [YOUR_TABLE] WHERE AttributeID = 456) --feline
AND AttributeID = 234

第二步:将所有剩余的“猫”替换为“猫”。

代码语言:javascript
复制
UPDATE [YOUR_TABLE]
SET AttributeID = 456 
WHERE AttributeID = 234
票数 1
EN

Stack Overflow用户

发布于 2014-07-10 16:10:34

假设这些列位于不同的列中,则需要规范第一列,因此它们都是相同的,然后只需删除另一列。

代码语言:javascript
复制
Update [table] set [attribute1] = 'cat' where [attribute1]='feline' or [attribute2]='cat'  

然后,删除所有其他:

代码语言:javascript
复制
delete from [table] where [attribute2]='feline' or [attribute2]='cat'

这样就行了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24681206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档