比较列从聚合函数到普通列-MYSQL

时间:2019-09-30 07:50:37

标签: mysql

将聚合函数的结果与MySQL查询中的普通字段进行比较时遇到问题。如果我使用where,则找不到total列;如果我使用having,则找不到base_tax_amount

SELECT entity_id, base_grand_total + base_subtotal as total from sales_order 
having total > base_tax_amount;

请问有人对此有所说明吗?

谢谢

1 个答案:

答案 0 :(得分:1)

按照查询执行顺序,-

  1. 从条款
  2. 条款在哪里
  3. 分组依据子句
  4. 有条款
  5. 选择条款
  6. Order By子句

别名不能在where子句中使用,因为它比select子句更早执行。您需要在下面查询-

SELECT entity_id, base_grand_total + base_subtotal as total
FROM sales_order
WHERE base_grand_total + base_subtotal > base_tax_amount;

此外,您的table中的base_tax_amount列是否是一列?