首页 > 解决方案 > 如何将一个值扫描为空而不处理它?

问题描述

在 Go 中,我正在尝试编写一个工具来处理 MySQL 表的结构,所以我必须使用很多这样的查询

show keys from`table`where`Key_name`='Primary'

在 MySQL 中,我不能用 select 命令包装这个命令并选择我想要的列,所以当我只想要一列(在这种情况下Column_name)时,我如何处理我不想要的列?因为此查询也返回所有这些其他列;Table, Non_unique, Key_name, Seq_in_index, Column_name, Collation, Cardinality, Sub_part, Packed, Null, Index_type, Comment, Index_comment.

在我的 Go 代码中,我的行看起来像这样

err = keysData.Scan(columnName)

如果我能做这样的事情会很酷

err = keysData.Scan(_, _, _, _, columnName)

但这并没有真正起作用,得到cannot use _ as value

我是否必须为这些不需要的列中的每一列声明丢弃值?

标签: mysqlsqlgo

解决方案


我会使用 INFORMATION_SCHEMA。这比 SHOW KEYS 更通用,因为您可以选择单个列。例如:

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_NAME='mytable' AND INDEX_NAME='PRIMARY'
ORDER BY SEQ_IN_INDEX

https://dev.mysql.com/doc/refman/8.0/en/statistics-table.html


推荐阅读