2015-07-10 68 views
4

我可以很容易地从表中选择我的所有列有:如何选择*并重命名​​列?

SELECT * FROM foo 

但是,如果我想在foobarbar重命名,我需要手动指定的所有字段。这使我的查询不稳健,如果将新列添加到表:

SELECT a,b,c,d,bar AS foobar FROM foo 

有写类似

SELECT *, bar AS foobar from foo 
+0

是的......你尝试过吗? – Siyual

+2

@RaduGheorghiu使用select *没有任何问题。它在所有情况下可能都不是最佳的,但说永远不要使用它是错误的。 – Jakob

+0

为什么不直接用alter来重命名该列? – Jakob

回答

7

是的,你可以做以下的可能性:

SELECT bar AS foobar, a.* from foo as a; 

但在这种情况下,你会得到两次吧:一个名字foobar和其他与酒吧*取得它..

+0

你的回答很好,但正如你所说我会得到两列。所以我想我会等待一点作为另一个答案 – nowox

+1

有没有其他的可能性,因为*总是获取所有列.. ,在这种情况下,你不能更简单的查询名称.. 如果你打算使用一些案件或其他任何东西,然后它会放慢.. –

2

有没有一种很好的方式来了解你在做什么。通常,最佳实践表明,出于性能原因,您应该避免使用SELECT * ...。特别是因为你刚才指定的原因 - 比如说你在这个表中添加一个大的字段,这与查询无关。无论您是否需要,您仍然使用“*”检索数据。

至于您的查询,您可以SELECT *, bar AS foobar from foo - 但你会复制你的结果,因为你会跟你的新别名返回由名称原始列以及列。

希望这会有所帮助!

0

通常,大多数表格柱对于select语句并不重要。 我在过去的10年中有不同的病例,60%的大部分colums都未使用。

在我们这个时代,性能是开发者面临的最后挑战之一。

请在每种情况下测试与解释MySQL命令的性能的语句。

+0

这应该是一个评论,而不是一个答案。 – Jakob