2011-07-28 107 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" 
相關問題