2016-06-30 27 views
1

如果我有一个查询这样的:MySQL的返回全TABLE.COLUMN名

SELECT id, name, age FROM people; 

我会得到一个名为ID,姓名和年龄列。有没有一个选项来指定“我想在我的结果中使用完整的table.column名称”? IE,理想情况下,我会运行上面的查询并获取people.id,people.name和people.age两列。

如果它有所作为,查询将从PHP运行。

我不希望使用SELECT ID AS people.id(etc),因为我有大约50个查询,每个查询包含大约10-12列。我希望避免手动重写所有这些查询。

除了“这是不可能的”之外,“重复”问题对我的问题没有回答(据我所知,也不是原始问题)。

+1

复制以下问题的http://stackoverflow.com/questions/268296/have-mysql -select-statement-return-fully-qualified-column-names-like-table-field –

+0

Thanks Aditya。看起来没有任何解决方案:-( –

+0

是的,也许这是不可能的,我可以建议一种避免大量手动工作的方法,您可以使用Notepad ++在所有打开的文档中进行替换。 :-) –

回答

0

您可以为此使用列别名。

SELECT id AS 'people.id', name AS 'people.name', age AS 'people.age' FROM people; 
+0

这正是我希望避免的。我有大约50个需要手动修复的查询,其中许多查询包含十几列。 –

+0

那么恐怕如果还有其他方法可以做到这一点的话。 – 1000111

-1

使用别名 基本上会创建别名以使列名更具可读性。 Sql Aliases

例子:

SELECT id AS 'people.id', name AS 'people.name', age AS 'people.age' FROM people; 
+0

这正是我希望避免的。我有大约50个需要手动修复的查询,其中许多查询包含十几列。 –

0

您可以简单地使用as

SELECT id as `people.id`, name as `people.name`, age as `people.age` FROM people; 

试试这个。

+0

这正是我希望避免的。我有大约50个需要手动修复的查询,其中许多查询包含十几列。 –

0

后来就尝试...... CONCAT与列名的表名和使用信息模式从表中得到的所有列.......

SELECT group_concat('table1.',COLUMN_NAME) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'db_name' AND TABLE_NAME = 'table1'; 

,如果你愿意,你可以存储结果在变量中,并根据您的要求使用它们。

,而您可以通过输入表名和DB_NAME创建一个动态查询和遍历,直到你的目标达到:-)

+0

谢谢,但那不合适。有些表格有很多列,我只需要返回显示的列。 –

+0

好吧,这些列在每个表中都包含相同的顺序....那么使用其中column_number/ordinal位置检索该列并不是什么大事 –