具有别名的FIND_IN_SET

时间:2019-01-30 10:14:17

标签: mysql

我想用逗号分隔特定的日子,所以使用组联系人。我的查询是这样的

   select doc,group_concat(tab.days) as group_days FROM tab where doc='G9AoP58ENTOwGBqo' AND FIND_IN_SET('sun',group_days);

但不会出错。

    #1054 - Unknown column 'group_days' in 'where clause'

2 个答案:

答案 0 :(得分:1)

您可以尝试以下操作-使用group_concat(tab.days)作为FIND_IN_SET()函数的参数而不是别名

select * from
(
   select doc,group_concat(tab.days) as group_days FROM tab 
   where doc='G9AoP58ENTOwGBqo' 
   group by doc
)A
where FIND_IN_SET('sun',group_days);

答案 1 :(得分:0)

您不能在where,Group By,Order by子句的select内使用列别名。您需要使用子查询这一点。检查我的回答如下:

以这种方式尝试

 select 
   doc,
   group_concat(tab.days) as group_days 
 FROM tab 
 where 
   doc='G9AoP58ENTOwGBqo' AND 
   FIND_IN_SET('sun',group_concat(tab.days));

或者

 select * from 
 (
   select 
     doc,
     group_concat(tab.days) as group_days 
   FROM tab 
   where 
     doc='G9AoP58ENTOwGBqo'
 )
 where  
   FIND_IN_SET('sun',group_days );