0

このクエリを仮想列で使用しましたNew_Users

SELECT `r`.`deal_id` as Deal_ID, 
       concat("2013\-05\-15") as start_date, 
       concat("2013\-05\-16") as end_date, 
       abs(0) AS New_Members 
  FROM (`ws_deal` r) 
 WHERE New_Members != 0 
 ORDER BY `deal_id`" 

エラー "1 Unknown column 'New_Members' in 'where clause' SQL.sql 1 118 " が発生しました

私が使用しなかった場合New_Members != 0、およびクエリが

 SELECT `r`.`deal_id` as Deal_ID, 
        concat("2013\-05\-15") as start_date, 
        concat("2013\-05\-16") as end_date, 
        abs(0) AS New_Members 
   FROM (`ws_deal` r)  
  ORDER BY `deal_id` 
  LIMIT 12"  

結果が出ます。

Deal_ID start_date      end_date       New_Members  

407 2013-05-15  2013-05-16  0
408 2013-05-15  2013-05-16  0
409 2013-05-15  2013-05-16  0
410 2013-05-15  2013-05-16  0
411 2013-05-15  2013-05-16  0
412 2013-05-15  2013-05-16  0
413 2013-05-15  2013-05-16  0
414 2013-05-15  2013-05-16  0
415 2013-05-15  2013-05-16  0
416 2013-05-15  2013-05-16  0
417 2013-05-15  2013-05-16  0

私の質問は、この結果をフィルタリングできない理由です。これをフィルタリングするにはどうすればよいですか。(とにかく考えるかもしれませんがNew_Member != 0、フィルターは必要ありません。しかし、これは大きなクエリセットで動的に生成されたクエリであり、フィルターによって発生する必要があります)

どうもありがとう

4

2 に答える 2

0

まず、 abs(0) は意味がありません。常に 0 を返します。

第 2 に、where 句ではエイリアスを使用できません。クエリ内でクエリを実行する必要があります。

于 2013-09-22T09:00:59.267 に答える
0

where 句でエイリアス化された列を使用することはできませんが、新しい列でサブクエリとフィルター処理を使用できます。

select
    Deal_ID, start_date, end_date, New_Members
from (
    select
        `r`.`deal_id` as Deal_ID, 
        concat("2013\-05\-15") as start_date, 
        concat("2013\-05\-16") as end_date, 
        abs(0) AS New_Members 
    from (`ws_deal` r) 
) as a
where New_Members != 0 
order by `deal_id`" 
于 2013-09-22T08:57:55.853 に答える