【问题标题】:Check if a column exists in mysql [duplicate]检查mysql中是否存在列[重复]
【发布时间】:2020-09-14 02:58:12
【问题描述】:

如何检查表中是否存在列,如果不存在则添加?(我使用的是mysql)

IF EXISTS(SELECT * FROM sys.columns
WHERE Name = N'columnName' AND OBJECT_ID = OBJECT_ID(N'tableName'))
BEGIN
PRINT 'Your Column Exists'
END

这是一个示例。我从网上得到的结果是旧版本的 mysql。我需要最新版本(mysql server 2019及以上版本)的答案。如何解决?

【问题讨论】:

  • 您的标签中有 mysql,但您的问题中有 mysql 和 sql-server-2019。这非常令人困惑。另外,如果要查找 SQL,为什么要添加 node.js 作为标签?

标签: mysql mysql-workbench


【解决方案1】:

您可以从information_schema 数据库访问此类信息。它包含一个columns 表。

information_schema 数据库是 ISO SQL 的一部分,并在所有 SQL 服务器上实现:

这是一个可移植的查询:

SELECT count(*) FROM information_schema.columns
WHERE table_schema = 'thedatabase'
  AND table_name = 'thetable'
  AND column_name = 'thecolumn';

【讨论】:

  • 我误读了文档,并认为服务器之间的实现不同。这会很尴尬:information_schema 数据库是 ISO SQL 的一部分,并且在所有实现上都应该是相同的。我修正了我的答案。
  • SELECT * FROM information_schema.columns WHERE database_name = 'userInformation' AND table_name = 'Articles' AND column_name = 'article3'; //这显示错误1054
  • 我在最初的回答中弄错了列:尝试table_schema 而不是database_name
【解决方案2】:

您可以使用以下查询

SHOW COLUMNS FROM table_name LIKE '%column_name%'

【讨论】:

    猜你喜欢
    • 2012-02-18
    • 1970-01-01
    • 2013-08-06
    • 2014-03-15
    • 1970-01-01
    • 2018-06-19
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多