MySql SELECT AS - 附加所有字段名称

Posted

技术标签:

【中文标题】MySql SELECT AS - 附加所有字段名称【英文标题】:MySql SELECT AS - Append all field names 【发布时间】:2010-04-07 18:52:34 【问题描述】:

我想做这样的事情:

SELECT table.id AS prefix_id, table.name AS prefix_name

...并将前缀动态添加到所有字段名称中,而不是手动选择它们(即SELECT table.* AS prefix_* 或其他东西)

希望我已经准确地描述了这一点。有什么想法吗?

编辑

要清楚,我问的原因是确保我的查询结果包含我调用的每个表中的 每个 列,即使有重复的字段名称也是如此。例如,我可能有一个包含很多字段的表,这意味着我不想手动为所有字段设置别名。此外,如果 3 个表有一个名为 name 的字段,我的结果将不会包含三个 name 结果;它会有一个。 我想避免歧义我的列名。

【问题讨论】:

前缀的用途是什么?我想我有一个想法,但这取决于你的问题的背景。 如果我从两个表中提取信息,并且两个表都有一个索引“id”和一个列“名称”,它将不会从两个表中返回结果。 将问题编辑为希望更有帮助。 这似乎是一个非常相似的问题:***.com/questions/329931/… 可能想看看那个讨论。 @itsmatt 没错。完全相同的问题。通过对 mysql.com 的更多研究,我发现了这个:dev.mysql.com/doc/refman/5.0/en/identifier-qualifiers.html,它说的是模棱两可,但不是我希望的解决方案。如果有人想回答这个问题,我宁愿不删除它。 【参考方案1】:

为了避免在具有多个表的列中出现歧义,您必须手动指定在多个表中存在的具有相同名称的每个列名。

http://dev.mysql.com/doc/refman/5.0/en/identifier-qualifiers.html

【讨论】:

【参考方案2】:

当您引用结果时,您可以通过 tablename.column 引用每一列。因此,您有一个附加到每个列名的默认前缀。

SELECT table.id,table.name,other.name FROM table,other Where other.name = table.name;

【讨论】:

【参考方案3】:

在mysqli中可以使用php函数

mysqli_fetch_fields()

对于字段信息 - 所以你得到每个列的表名

【讨论】:

【参考方案4】:

我可以想象这样一种情况,如果您需要从单个 SQL 查询中填充的列表中有多个数据模型,这可能会很有用。

应该可以在 SELECT 查询之前对这些表使用 DESCRIBESHOW COLUMNS。这样,您就知道每个表的所有字段名称。但是,这无助于任何潜在的字段名称冲突。

我不会评论这是否是一个好主意。每个开发人员都必须决定在灵活性、懒惰和良好实践之间划清界限。

【讨论】:

以上是关于MySql SELECT AS - 附加所有字段名称的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中数据的基本查询方式

mysql 数据库学习第二天

最基础!MySQL基础查询SELECT

mysql 语法

5_MySQL_别名和多表连接查询

MySQL数据表查询操作