2013-05-20 93 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