Mysql 仅从不包含信息的表中选择字段名。\u架构

Mysql 仅从不包含信息的表中选择字段名。\u架构,mysql,information-schema,Mysql,Information Schema,我可以执行以下查询: 从表名中选择列…或从表格名称中选择列 这将给出以下示例结果: +-------+--------+------+-----+---------+ |字段|类型|空|键|默认值| +-------+--------+------+-----+---------+ |id | char | no | pri |(空)| + + + + + + |名称|字符|否| |(空)| +-------+--------+---

我可以执行以下查询:

从表名中选择列
…或<代码>从表格名称中选择列

这将给出以下示例结果:

+-------+--------+------+-----+---------+
|字段|类型|空|键|默认值|
+-------+--------+------+-----+---------+
|id | char | no | pri |(空)|
+       +        +      +     +         +
|名称|字符|否| |(空)|
+-------+--------+------+-----+---------+

这是可以的,但我只需要
字段
列。我看到过一些解决方案,您可以查询
信息\u模式
,但不幸的是,我没有这个选项,因此我正在寻找一个与

selectfieldfrom(显示table-name中的列)
(但我知道这是不可能的)


而且,这需要在一个查询中实现。

MySQL提供的解决方案是使用信息模式。如果有人能提出替代方案,你需要解释为什么这不是你的选择,以及你试图实现的目标

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA='myschema' AND TABLE_NAME='mytable'
即使默认模式当前是其他模式,也可以使用限定的表名(如上所示)查询I_S表


您始终具有读取I_的权限。如果您具有读取指定架构中的表的权限,则可以从I_表中读取相应的元数据行。

问题在于,后端以一些旧的遗留代码中的特定db为目标,而我们不敢碰它。我也可以将其重新布线以针对I_,但这会带来更多麻烦,而且代码很可能永远不会被重用。如果正确的(唯一的)方法是将I_设置为目标,那么我想这就是我必须要做的。doBy“targets”你的意思是代码设置了默认数据库吗?任何查询都可以引用来自其他模式(如I_)的表,甚至可以在同一查询中混合和匹配来自不同模式的表。这就是限定表名的用途。我的意思是代码设置了一个默认数据库。例如,假设我的db是db_1,我要在代码中执行一个查询,该查询就像:
SELECT*FROM table_in_db_1
,因为我不需要引用db。所以这就像一个配置,但我不想篡改它,从我刚刚读到的内容来看,我认为限定符在这个实例中不起作用