我可以在where子句中使用别名吗?

时间:2017-06-04 11:43:53

标签: mysql

SELECT sum(st.stock_in) - sum(st.stock_out) as'stock_qty',
p.product_name,p.product_limit
FROM stock  as st 
join products as p 
on p.product_id=st.product_id
where 'stock_qty' < 'p.product_limit'   
GROUP BY st.product_id

我有两个表产品和库存。

产品表:Product_id,Product_name和Product_limit

股票:stock_id,Product_id,stock_in,stock_out

从上面的查询我得到所有记录,但我想只获得那些达到或低于产品限制的记录。

如果产品1有50 product_limit且库存达到50限制或低于50限制,请告诉我这些记录。

建议我最好的解决方案。

1 个答案:

答案 0 :(得分:1)

你不能:

  • where子句中使用别名。
  • where子句中使用聚合函数。

虽然几乎不建议比较两个字符串,但是允许这样做。

但是,无论如何你想要一个having条款,所以标题中的问题是无关紧要的。试试这个:

select sum(st.stock_in) - sum(st.stock_out) as stock_qty,
       p.product_name, p.product_limit
from stock st join
     products p 
     on p.product_id = st.product_id
group by p.product_name, p.product_limit
having stock_qty < p.product_limit  ;

请注意,我更改了group by以匹配select中所选的列。这也是一种很好的做法。