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

标签 mysql sql

目前我们有一个表“新闻”,其中包含以下相关字段:

  • ID
  • is_topnews

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

  • ID

类别“Top”(也用于“topnews”的通用类别)已插入“id”“4”,正如您在下面的查询中看到的那样。

以及具有以下字段的相关映射表“category_mm”:

  • 源表
  • 来源 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 来完成吗?

最佳答案

请尝试这个:

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

关于MySQL:从带标志的表迁移到映射表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27076939/

相关文章:

sql - 您会将这个简单的 SQL 发回进行返工吗?

sql - 性能差异 : select top 1 order by vs. select min(val)

mysql - 左连接和计数在 MYSQL 中不能正常工作

mysql - 使用动态 MySQL 创建新表

mysql - 使用 FirstOrDefault() 时 Entity Framework 更新多条记录

php - 确认 PHP 的 MySQL 连接持久性

mysql - 当搜索需要更具体时,如何在 MySQL 中使用 like 函数或在 mysql 中运行 LIKE 命令

mysql - 在主查询中使用子查询

php - 检查文件系统文件与数据库的一致性

php - 一个表而不是另一个表中的 MySQL PHP ID