Unknown column issue with mysql alias

后端 未结 3 745
走了就别回头了
走了就别回头了 2021-01-12 06:03

I can\'t figure out why i am getting an unknown column when the column is an alias that was created. Any help would be great.

code:

SELECT DISTINCT 
         


        
相关标签:
3条回答
  • 2021-01-12 06:38

    You cannot access the alias directly by name.

    One solution is to wrap the query with the aliases in a subquery, and then refer to the alias names in an outer query:

    SELECT DISTINCT * 
    FROM 
        (
         SELECT c.id, 
              ((SUM(c.width_feet)*12)+(SUM(c.width_inches))) AS width, 
              ((SUM(c.height_feet)*12)+(SUM(c.height_inches))) AS height
         FROM carpets AS c 
         WHERE c.active = '1'
        ) sub
    WHERE (sub.width BETWEEN '0' AND '275') 
    AND   (sub.height BETWEEN '0' AND '599') 
    ORDER BY sub.item_no
    
    0 讨论(0)
  • 2021-01-12 06:49

    I don't think you can use your "width" alias in your "width between .. and .."; you need to repeat the raw calculation, sadly. Same for "height". So, the following should work:

    SELECT   DISTINCT c.id, 
             ((SUM(c.width_feet)*12)+(SUM(c.width_inches))) AS width, 
             ((SUM(c.height_feet)*12)+(SUM(c.height_inches))) AS height 
    FROM     carpets AS c 
    WHERE    c.active = '1' 
    AND      (((SUM(c.width_feet)*12)+(SUM(c.width_inches))) BETWEEN '0' AND '275') 
    AND      (((SUM(c.height_feet)*12)+(SUM(c.height_inches))) BETWEEN '0' AND '599') 
    ORDER BY c.item_no 
    
    0 讨论(0)
  • 2021-01-12 06:52

    You can use aliases in the order by clause, but you can't use aliases in the where or group by clause. Either you repeat the expression or you can use a subquery.

    0 讨论(0)
提交回复
热议问题