2014-11-22 74 views
0

目前我們有以下的相關字段的表「新聞」:MySQL的:從表標誌遷移到映射表

  • ID
  • is_topnews

現在全系統的表'category'與以下相關字段一起引入:

  • id

類別'Top'(用於'topnews'的通用類別)插入了'id''4',您可能會在下面的查詢中看到。

並以下列領域內的相關映射表 'category_mm':

  • source_table
  • SOURCE_ID
  • CATEGORY_ID

現在我要爲所有的映射表條目'新聞'有'is_topnews'設置爲'1'。我用下面的查詢,但沒有成功試了一下,錯誤消息說,我有一個錯誤在我的「FROM [...]」語法附近:

INSERT INTO category_mm 
     SET category_mm.source_table = 'news', 
      category_mm.source_id = news.id, 
      category_mm.category_id = 4 FROM news 
     WHERE news.is_topnews = 1; 

可這在平原(MY-)SQL來完成不知何故?

回答

2

請試試這個:

INSERT INTO category_mm (source_table, source_id, category_id) 
(SELECT 'news', news.id, 4 FROM news WHERE news.is_topnews = 1) 
+0

作爲一個說明,圍繞'select'括號是不必要的。 – 2014-11-22 14:02:41

+0

謝謝@GordonLinoff – 2014-11-22 14:18:08

1

試試這個方法:

INSERT INTO category_mm (source_table, source_id, category_id) 
VALUES (SELECT 'news', news.id, 4 FROM news WHERE news.is_topnews = 1);