因此,我有一个sql数据库,我想复制一个名为“searches”的表中的所有行,这些行在名为“search\uurl”的列中有“google”一词。这个表中的记录超过300000条,所以我不想全部复制,只想复制那些在“search\u url”列中有“google”的记录。
新行的id应该自动递增,所有其他列必须相同,除了名为“search\uurl”的列,其中“google”必须变成“search.yahoo”
我的sql不是很好,我会感谢所有的帮助,我可以得到!谢谢:)
编辑:
样本数据:
ID SEARCH_URL SEARCHABLE_ID SEARCHABLE_TYPE
1 https://www.google.com/search?q=camping 1 App\News
2 https://www.google.com/search?q=hiking 2 App\News
所以我想在复制之后变成:
ID SEARCH_URL SEARCHABLE_ID SEARCHABLE_TYPE
1 https://www.google.com/search?q=camping 1 App\News
2 https://www.google.com/search?q=hiking 2 App\News
3 https://search.yahoo.com/?q=camping 1 App\News
4 https://search.yahoo.com/?q=hiking 2 App\News
2条答案
按热度按时间pqwbnv8z1#
这是一个循序渐进的步骤。遵循这个过程,这样就不会插入大量的坏数据。
1) 选择所需的行,但自动增量主键id-mysql将自行管理:
如果不需要所有行,请使用where子句
2) 您可以根据自己的意愿修改数据。这里我们使用string replace函数将google改为yahoo:
检查它是否好看(你说你想改变google->search.yahoo,但严格来说,你的例子需要数据www.google ->search.yahoo)-在插入数据之前检查数据
3) 然后在上面添加一个insert,插入到您的表中
您需要指定要插入的完整列集,并且必须指定与所选相同的插入列数。
如果有自动递增的主键,则不能执行
insert into table select * from table
因为这将选择id列,然后尝试插入一组已经存在的值vc9ivgsu2#
请使用以下查询获取所需的输出:
希望对你有用。