基本上试着用另一个表中的产品代码填充一个表。代码可以在ProductDescriptions.的Products表中重复,因为它有关于产品大小的数据,但是这个值需要是惟一的。
每次在ProductDescriptions产品表中有一个新的不同的产品代码时,我都需要有一个新的条目进入表。
我尝试过各种各样的事情,但没有成功,似乎没有那么复杂,但它令我困惑。
我试过这样做:
INSERT INTO ProductDescriptionsbackup(ProductID) SELECT DISTINCT `PRODUCT CODE` FROM Products但是,它不能运行,因为它不能只接受不同的值,而且从长远来看,它不会自动更新,不过这将是次要的问题。
主要问题是将不同的值输入到ProductDescriptions表中。
我环顾四周寻找答案,但没有什么能让我觉得有意义的。提前感谢您的帮助。
发布于 2013-06-27 16:25:30
如果您只是尝试插入新的值,这应该是可行的。您可以对目标表进行左联接,并且只包含不存在的记录(WHERE pbu.ProductID IS NULL)。
INSERT INTO ProductDescriptionsbackup(ProductID)
SELECT DISTINCT p.`PRODUCT CODE`
FROM Products as p
LEFT JOIN ProductDescriptionsbackup as pbu
ON p.`PRODUCT CODE` = pbu.ProductID
WHERE pbu.ProductID IS NULL;发布于 2013-06-27 16:32:54
让我们打断你的问题有两部分。首先是在产品中插入新行时总是更新ProductDescriptions,其次是如何插入新值。
对于第一部分,有两个选项,在代码中,您负责每次在产品表中执行插入操作时,在任何地方显式插入产品描述,或者可以通过插入后创建触发器进行插入。
create trigger ai_eav
after insert on eav
for each row
(...)我推荐第二个选项,这样您就不会忘记插入,但是有些人不喜欢触发器,因为它们对程序员来说是“不可见的”,因为它们通常会被遗忘。
对于第二部分,如果不存在,则可以执行插入操作,这可以通过使用左联接进行插入来实现。
insert into ProductDescriptions(ProductID)
select distinct p.`PRODUCT CODE`
from Products
left join join ProductDescriptions on `PRODUCT CODE` = ProductID
where ProductID is null如果选择触发器,甚至可以利用伪行的新特性,使插入速度更快,因为您将使用单个行,而不是使用整个products表。
https://stackoverflow.com/questions/17348249
复制相似问题