2013-05-20 52 views
2

我想在选择所有字段的选定字段上使用新名称。选择所有,但选择所有数据时使用newname,而选择所有数据

SELECT id NEWNAME uid all fields form table; 

有反正对我来说,做到这一点,因为表中有很多领域我一直在寻找一个较短的版本。或者我总是可以得到表的字段implode他们在一个字符串替换领域与字段NEWNAME new_field但这并不短。有什么建议吗?

谢谢

+0

你可以做'SELECT *,ID NEWNAME,othercol OTHERNAME'它会给你_duplicate_列,其中之一有你的'NEWNAME'别名,但总是建议在'SELECT'列表中明确显示,而不是生产代码中的'SELECT *'。 –

+0

表没有正常化吗? –

+0

这样会给我的id和它的新名字?所以我可以在查询中使用豁免不包含旧名称? – magicianiam

回答

1

MySQL SELECT reference

一个select_expr可以使用AS * ALIAS_NAME *被赋予一个别名。 别名是 ,用作表达式的列名称,可用于GROUP BY, ORDER BY或HAVING子句。例如:

SELECT CONCAT(last_name,', ',first_name) AS full_name 
FROM mytable ORDER BY full_name; 

在操作

要做到这一点,你需要使用一个别名,专门致电,你会需要拉每个表列。但是不要使用所有列的*列匹配。一个例子可能是:

SELECT id as user_id,name as user_name, 
st_code as state,postal as zipcode from table 

如果您是从两个不同的表通过拉动了重复的列名,你会做这样的事情:

SELECT a.id as user_id,b.id as parent_id 
from table_1 a,table_2 b where b.name=a.name; 
+0

排除旧ID,这也将返回id和user_id,我是否正确? – magicianiam

+0

@magicianlam如果你有两个不同的列,一个id和一个user_id,他们只会在你请求它们时返回。 –

+0

是否有可能不在结果查询中包含id?以避免重复输入。谢谢 – magicianiam

1

你能设法从表中选择所有COLUMS只需使用*并选择ID与ALIAS

SELECT *, id as NEWNAME from table; 
+1

为了让OP称它为*“exempt”*旧名称,他们将不得不用新名称列出每一列,而不是对所有列使用'*'列匹配。 –

0

您可以使用下面的方法:

select a.id as newname, a.* from tablename a 

而缺点是在选定的列中也重复了id。

+0

然后我可以只使用豁免不包括ID? – magicianiam

+1

你不能在那里添加任何豁免。 a。*将包含所有字段。您将有一个额外的字段,您可以在处理结果集时忽略它。如果你不想要任何额外的字段,除非你明确指定了你想要的字段,否则没有办法。 like select a.id,a.title,a.desc from tablename a – Nagarjun

+0

yes but then the id given an new name will also be called,so in my query if now now id-“old”and id-“新”。如我错了请纠正我。 – magicianiam