2014-09-11 105 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