ZBLOG

mysql 使用元数据找出两张表相同的列名并重命名

可以使用以下SQL语句找出两张表相同的列名并重命名:

SELECT COLUMN_NAME AS old_name, CONCAT('new_', COLUMN_NAME) AS new_name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'your_database'
AND TABLE_NAME = 'table1' AND COLUMN_NAME IN (
  SELECT COLUMN_NAME
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE TABLE_SCHEMA = 'your_database'
  AND TABLE_NAME = 'table2'
)

这个查询会返回一个结果集,其中包含了所有在table1table2中相同的列名,同时也提供了新的列名。你可以将这个查询嵌套到一个UPDATE语句中来更新表结构:

UPDATE table1 t1
JOIN (
  SELECT COLUMN_NAME AS old_name, CONCAT('new_', COLUMN_NAME) AS new_name
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE TABLE_SCHEMA = 'your_database'
  AND TABLE_NAME = 'table1' AND COLUMN_NAME IN (
    SELECT COLUMN_NAME
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_SCHEMA = 'your_database'
    AND TABLE_NAME = 'table2'
  )
) t2 ON t1.old_name = t2.old_name 
SET t1.new_name = t1.old_name;

注意,在上面的例子中,我们使用了CONCAT()函数来为每个需要重命名的列生成一个新名称。你可以根据实际情况修改生成新名称的逻辑。此外,如果你只需要找出两张表是否具有相同的列名而无需重命名,则不需要执行第二条UPDATE语句。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=5363

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?