在我的数据库的表1中有一个名为Product Title的列,其中一些产品具有相同的名称。但是,它们的价格不同。
还有一个名为“产品版本”的列。这可以用销售价格,主零售价格,黑色星期五价格来填补。
对于并非“主零售价”的所有产品,我需要将主零售价产品编号填入主产品编号栏。
例如:如果有三个名为Banana的物品,我需要销售版本的物品在主要产品编号栏中有主要产品编号。
如果产品版本为“主零售价”,则该行的主产品编号应为NULL。
到目前为止,我已将代码中的所有产品编号插入表2中。如果有人可以提供帮助,我将非常感谢。
Select [Table 1].[Product Title], [Table 1].[Product No]
FROM [Table 1]
INNER JOIN [Table 2] ON [Table1].[Product Title]=[Table 2].[Product Title]
UPDATE [Table 1]
SET [Table 1].[Main Product Number]=[Table1.[Product No]
WHERE [Table 1].[Product Verison]='Master Retail Price';
答案 0 :(得分:0)
好的,让我们再现你所说的话
对于这个例子,我使用了Oracle数据库。
我们有表t1,比方说4列(你提到的那些)
create table t1(
main_product_number int,
product_number int,
product_title varchar2(20),
product_version varchar2(40) );
使用一些虚构值填充表格
insert into t1 values (NULL, 1,'Banana','Master Retail Price');
insert into t1 values (5, 2, 'Banana','Sale Price');
insert into t1 values (7, 3, 'Banana','Black Friday Price');
进行简单的选择以查看数据:
select * from t1;
MAIN_PRODUCT_NUMBER PRODUCT_NUMBER PRODUCT_TITLE PRODUCT_VERSION
- 1 Banana Master Retail Price
5 2 Banana Sale Price
7 3 Banana Black Friday Price
对于所有不是“主零售价”的产品,我需要 将主零售价格产品编号填入主页 产品编号栏。
嗯......让我们在一个漂亮的自我加入中使用相关的子查询来完成这项任务:
update t1 a
set a.main_product_number=( select product_number
from t1 b
where a.product_title = b.product_title
and b.product_version='Master Retail Price'
and b.main_product_number is null
)
where a.product_version <> 'Master Retail Price';
现在所有非主零售价的产品,其主要产品编号将填入主零售价产品编号,如下图所示。
MAIN_PRODUCT_NUMBER PRODUCT_NUMBER PRODUCT_TITLE PRODUCT_VERSION
- 1 Banana Master Retail Price
1 2 Banana Sale Price
1 3 Banana Black Friday Price
希望它对你有所帮助。