MySQL:从带标志的表迁移到映射表



目前我们有一个表格'news',其中包含以下相关字段:

  • 编号
  • is_topnews

现在引入了一个系统范围的表"类别",其中包含以下相关字段:

  • 编号

类别"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;

这可以以某种方式在普通(我的)SQL中完成吗?

请尝试以下操作:

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

试试这个方式:

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

最新更新