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 脚本。更新表中的列的主要内容,如果未能解决你的问题,请参考以下文章