2011-07-28 72 views
1

我一直在放松我的想法。我有三张我必须加入的表,但是如果三列没有现有值,我只需要插入数据库。我试过ON DUPLICATE KEY UPDATE,WHERE NOT EXISTS和FINALLY,我试图INSERT IGNORE最后一个是没有任何结果,因为其他人会插入,即使是相同的值存在。如果VALUES不存在,则插入

我想

insert into TABLE name: set_colors (school_art_id, baseimage_id, sub_folder, layer) 

school_art_id是“ID”另一个表叫school_art baseimage_id是“ID”从表中调用baseimage sub_folderbaseimage.sub_folder 层文件夹名称为价值from baseimage.layer

这是不起作用的查询

INSERT IGNORE INTO set_colors (school_art_id, baseimage_id, sub_folder, layer) 
SELECT 'school_art.id', 'baseimage.id', 'baseimage.sub_folder', 'baseimage.layer' 
SET school_art_id='school_art.id', 
baseimage_id='baseimage.id', 
sub_folder='baseimage.sub_folder', 
layer=baseimage.layer 

有人可以告诉我我在做什么错误吗?

回答

0
INSERT IGNORE 

应该是

INSERT IGNORE INTO 

然而SET不可能在SELECT或INSERT使用INTO查询

+0

谢谢你,我得到了所有兴奋,但它仍然没有工作,任何其他的想法? – GGcupie

+4

了解如何操作[插入](http://dev.mysql.com/doc/refman /5.5/en/insert.html)声明应该看起来像 – genesis

+0

实际上可以使用SET和INSERT INTO – technology

2

你的查询语法被完全破碎器选择部分。您正在选择一系列常量字符串,然后由于某种原因进入“SET”并执行一些分配。这是没有任何意义的,因为你没有在select中设置一个值。

您的查询应该是这个样子

INSERT IGNORE INTO set_colors (school_art_id, baseimage_id, sub_folder, layer) 
SELECT field1, field2, field3, field4 
FROM some_other_table 
WHERE ... 
0

嗯,我找到了解决办法,如果任何人遇到了同样的问题(我把这个类,因此{$值}只是在传递时你调用类。

INSERT IGNORE INTO set_colors (school_art_id, baseimage_id, sub_folder, layer) 
SELECT school_art.id, baseimage.id, baseimage.sub_folder, baseimage.layer 
FROM school_art 
JOIN baseimage ON baseimage.base_folder = school_art.series_code 
WHERE baseimage.image_type = 'B' AND school_art.id = '{$value}' ORDER BY school_art.id" 
相关问题