2015-11-06 31 views
0

我確定之前已經詢問過這一點,但是我無法完全從我嘗試執行的操作與我發現的搜索進行連接。我想這是因爲我想從第二個表格和非關鍵字段來完成。如果行存在,則更新else使用另一個表中的數據插入新記錄

基本上我有這個包含不同課程關鍵字的curriculum.keywords表。

+-----------+--------------+------+-----+---------+----------------+ 
| Field  | Type   | Null | Key | Default | Extra   | 
+-----------+--------------+------+-----+---------+----------------+ 
| id  | int(11)  | NO | PRI | NULL | auto_increment | 
| course_id | int(11)  | NO | MUL | NULL |    | 
| keyword | varchar(100) | NO | MUL | NULL |    | 
| excerpt | longtext  | NO |  | NULL |    | 
| explained | longtext  | NO |  | NULL |    | 
| slug  | varchar(100) | NO |  | NULL |    | 
+-----------+--------------+------+-----+---------+----------------+ 

,我有一個從舊的WordPress網站,其中包含大量的理論筆記上面搭配一些關鍵字在表標題的提取物。

+------------------+----------------+------+-----+---------+-------+ 
| Field   | Type   | Null | Key | Default | Extra | 
+------------------+----------------+------+-----+---------+-------+ 
| wp_ID   | int(4)   | YES |  | NULL |  | 
| wp_post_date  | varchar(19) | YES |  | NULL |  | 
| wp_post_modified | varchar(19) | YES |  | NULL |  | 
| wp_post_status | varchar(7)  | YES |  | NULL |  | 
| wp_post_title | varchar(35) | YES |  | NULL |  | 
| wp_post_content | varchar(10435) | YES |  | NULL |  | 
| wp_post_excerpt | varchar(224) | YES |  | NULL |  | 
| wp_post_parent | int(1)   | YES |  | NULL |  | 
| wp_post_name  | varchar(33) | YES |  | NULL |  | 
| wp_post_type  | varchar(8)  | YES |  | NULL |  | 
+------------------+----------------+------+-----+---------+-------+ 

如果關鍵字找到我想要更新的摘錄,並解釋與舊的WordPress的數據給它2.課程ID字段如果關鍵字不存在,我想插入新行,並給它的course_id爲4.

我從這個from here開始,但不能完成它。

IF NOT EXISTS (SELECT * FROM `curriculum.keywords` WHERE `keyword` = STUCK HERE) THEN 

    INSERT INTO `curriculum.keywords` (`keyword`, `excerpt`, `explained`, `slug`, `course_id`) 
    SELECT `wp_post_title`, `wp_post_excerpt`, `wp_post_content`, `wp_post_name`, 4 FROM `aimport-notes` 

    ELSE 

    UPDATE `curriculum.keywords` (`keyword`, `excerpt`, `explained`, `slug`, `course_id`) 
    SELECT `wp_post_title`, `wp_post_excerpt`, `wp_post_content`, `wp_post_name`, 4 FROM `aimport-notes` 
    WHERE `curriculum.keywords`.`keyword` = `aimport-notes`.`wp_post_title` 

    END IF; 

感謝您的幫助期待。

克里斯

+0

如果某個關鍵字在一個以上的發現:

INSERT INTO 'curriculum.keywords' ('keyword', 'excerpt', 'explained', 'slug', 'course_id') SELECT notes.'wp_post_title', notes.'wp_post_excerpt', notes.'wp_post_content', notes.'wp_post_name', 4 FROM 'aimport-notes' notes left join 'curriculum.keywords' keywords on notes.keyword=keywords.wp_post_title where keywords.keyword is null; 

查詢來更新匹配關鍵字記錄WP記錄? – JimmyB

回答

0

查詢與新的關鍵字插入數據:

update `curriculum.keywords` keywords 
inner join `aimport-notes` notes on notes.keyword=keywords.wp_post_title 
set keywords.keyword=notes.wp_post_title, 
    keywords.excerpt=notes.wp_post_excerpt, 
    keywords.explained=notes.wp_post_content, 
    keywords.slug=notes.wp_post_name, 
    keywords.course_id=4; 
+0

@ hanno-binder,你的建議可能是正確的,你對重複的標題有一個好主意,但是我選擇了這個Code-Monk方法,因爲它分爲兩部分 - 對我來說更容易導航。除了幾個字段名稱錯誤,它工作得很好。感謝週五的幫助人員。 –

0
IF NOT EXISTS (
    SELECT 1 FROM `curriculum.keywords` kw 
    INNER JOIN `wordpress` wp 
    ON wp.wp_post_title LIKE CONCAT('%', kw.keyword, '%') 
) 
... 
相關問題