2014-09-11 96 views
-1

我想在下面的查詢給別名:別名未知SELECT在MySQL

select x.* as rand_name , @rownum := @rownum + 1 as num from (select t.names 
from mask_data_name_dist t) x, (select 
@rownum := 0) r 

上面的查詢是錯誤的堂妹,我想給別名rand_nameX *。 有沒有一種方法可以做到這一點? 注意:我不能觸摸子查詢,內部查詢是動態的,並經常更改。舉個例子,我已經硬編碼了一個簡單的select語句。 在此先感謝。

+0

選擇x.names ...... – Strawberry 2014-09-11 11:48:25

回答

0

您不僅可以爲單個列給出的別名*運營商:

SELECT rand_name , @rownum := @rownum + 1 as num 
FROM (SELECT t.names AS rand_name -- Note the alias here. 
     FROM mask_data_name_dist t) x, 
     (SELECT @rownum := 0) r 

編輯:
由於內部查詢不能觸及,外部查詢也可以應用:

select x.names as rand_name , -- note the explicit column name 
     @rownum := @rownum + 1 as num 
from (select t.names mask_data_name_dist t) x, 
     (select @rownum := 0) r 
+0

感謝您UR快速反應。但是,我的問題有所不同。請在我的問題中查看註釋部分(如果我之前不清楚,請原諒我) – user3360094 2014-09-11 11:56:17

+0

@ user3360094編輯。 – Mureinik 2014-09-11 11:58:43

+0

thxs,但正如我前面提到的查詢是動態的,所以我不能編輯它,因此我不知道column_name出現。希望你瞭解我的要求。 – user3360094 2014-09-11 13:08:24

0

x.* me ans:表格x中的所有列。它是一個集合,你不能在SQL中爲集合添加別名。正確的列名添加到列表SELECT並添加一個別名,該列或子查詢中添加別名

select 
    x.* 
    , @rownum := @rownum + 1 as num 
from (
    select t.names AS rand_name 
    from mask_data_name_dist t 
) x, 
(
    select 
    @rownum := 0 
) r 
+0

謝謝你的快速回復。但是,我的問題有所不同。請在我的問題中查看註釋部分(如果我之前不清楚,請原諒我) – user3360094 2014-09-11 11:57:10

+1

無論如何,您不能將別名添加到集合(x。*)。使用所需的別名生成查詢。如果您在其他應用程序中使用了結果,則在SELECT列表中使用佔位符(*)的查詢可能會很危險。 SELECT部分​​中的正確字段列表是實現您的目標的最佳方式。 – Pred 2014-09-11 12:03:45