2015-07-10 42 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