2012-04-05 86 views
2

我能确定我想用select语句中的数据删除行会议标准:SQL:如何从另一个表

SELECT InventoryUnitMeasure.ItemCode, 
     InventoryUnitMeasure.UPCCode, 
     InventoryItem.ItemName 
FROM InventoryUnitMeasure 
    INNER JOIN InventoryItem 
     ON InventoryUnitMeasure.ItemCode = InventoryItem.ItemCode 
where ItemName like 'SNT%' 

然后我试图改变删除列UPCODE表InventoryUnitMeasure像这样但得到一个错误:

DELETE upccode from 
FROM dbo.InventoryUnitMeasure 
    INNER JOIN InventoryItem 
    ON InventoryUnitMeasure.ItemCode = InventoryItem.ItemCode 
where ItemName like 'SNT%' 

我知道我在做一个简单的错误,但我就是想不通,我已经试图寻找在多个站点和不同的搜索,但我只能看到如何删除整个表加入时,而不仅仅是一列。

任何帮助将不胜感激。

我正在使用SQL Server作为DBMS。

+0

而错误是...? – 2012-04-05 22:14:31

+1

您正在使用哪些DBMS? PostgreSQL的?甲骨文? DB2? SQL Server? – 2012-04-05 22:14:53

+2

你想删除*行*或*列*吗?这些是两个完全不同的东西...... – 2012-04-05 22:15:47

回答

0
DELETE InventoryUnitMeasure.upccode 
FROM dbo.InventoryUnitMeasure 
    INNER JOIN InventoryItem 
    ON InventoryUnitMeasure.ItemCode = InventoryItem.ItemCode 
where ItemName like 'SNT%' 

这应该工作

+0

我不知道任何DBMS可以让你在'DELETE FROM'语句中指定一个列。他要么删除整行(因为他将其与另一行关联),将该特定列更新为表示删除的某个值,或者想要更改表的结构以删除列......但这不会适用于任何这些情况。 – 2012-04-05 22:42:20

3

是不是DELETE语句用于删除整行?正如我underestand你的问题,你应该使用UPDATE语句来代替..

UPDATE table dbo.InventoryUnitMeasure SET upcode = null ... 

语法上有些淡淡的可here(快速谷歌搜索)

+0

+1用于将链接发布到多个DBMS的多个解决方案,因为它没有被OP指定。 – 2012-04-05 22:43:56

+0

更新表正是我想要做的。谢谢皮达,通过我的问题来看我真正想知道的东西! 对于将来出现类似问题的人,这是针对SQL Server的。 – user1316376 2012-04-06 12:58:39

+0

欢迎你:)现在你可以接受这个答案作为解决方案我想:) – 2012-04-06 18:39:18

0

你有没有注意到,有两名来自陆续陈述一个?只需将删除语句的开头更改为DELETE FROM table_name ....

如果您希望更新特定列下的单元格值,则Píďa是正确的。如果你想从表中删除整列,那么你应该使用 ALTER TABLE表名

DROP COLUMN列名

这意味着你正在改变该表的结构。