SQL 脚本。更新表中的列

Posted

技术标签:

【中文标题】SQL 脚本。更新表中的列【英文标题】:SQL Script. Updating a column in a table 【发布时间】:2011-02-23 17:15:05 【问题描述】:

我想知道我做错了什么。我在这个问题中使用了 2 个表:ODETAILS 和 PARTS。 ODETAILS 具有以下列:ONO、PNO、QTY、COST PARTS 具有以下列:PNO、PNAME、QOH、PRICE、OLEVEL 我正在尝试更新 ODETAILS 中的 COST 列,以便 COST = QTY * PRICE PRICE 可在 PARTS 中找到。但是我怎样才能连接这两个表。我在放屁,因为这是我尝试过的:

更新详情 设置成本 = 数量 * (选择价格 从零件 其中 PNO = (选择 PNO 从细节 没有 PNO= NULL ) ) WHERE NOT PNO = NULL;

【问题讨论】:

【参考方案1】:

我认为第二个子查询是错误的,因为它可以为您提供多行并且是不必要的:

update odetails
set cost = qty * (select price from parts where parts.pno = odetails.pno)
where pno is not null

【讨论】:

【参考方案2】:

至少在 mysql 中,您不能在子选择中重新打开要更新的表。试试这个:

UPDATE ODETAILS o
JOIN   PARTS p
ON     o.PNO = p.PNO
SET    o.COST = o.QTY * p.PRICE

【讨论】:

【参考方案3】:

根据数据库设置 (null yield null) ,您不能使用等于、不等于运算符进行比较。使用

where PNO is not null

【讨论】:

【参考方案4】:

想通了。不管怎么说,还是要谢谢你。

UPDATE ODETAILS
SET COST = QTY * (
   SELECT PRICE
   FROM PARTS
   WHERE (PARTS.PNO=ODETAILS.PNO)
);

【讨论】:

以上是关于SQL 脚本。更新表中的列的主要内容,如果未能解决你的问题,请参考以下文章

无法更新sql表中的列

从 Excel 更新 SQL Server 表,然后填充剩余的列数据

插入后使用 SQL Server 触发器更新另一个表中的列

SQL:根据另一个表的计数结果更新一个表中的列

获取 ajax 请求以更新 SQL 表中的列

Oracle SQL - 重复行并更新表中的列