【问题标题】:Using Alias Column in WHERE Statement在 WHERE 语句中使用别名列
【发布时间】:2015-12-30 00:59:14
【问题描述】:

我知道我不能在 WHERE 子句中使用别名列,因此我正在尝试找出编写查询的最佳方法,但我正在苦苦挣扎。我尝试用“HAVING”过滤它,但是我不能同时使用 GROUP BY,这使得我的 Subtotal 列汇总了整个 DB 中的所有记录。

这是我想要做的:

SELECT a.ID, SUM(b.Qty * b.Price) AS Subtotal
FROM tbl_One AS a
LEFT JOIN tbl_Two AS b ON b.TwoID = a.ID
WHERE Subtotal > 100 AND Subtotal < 200
GROUP BY a.ID

任何关于我如何以不同方式做到这一点的建议将不胜感激!

【问题讨论】:

  • 不能同时使用 GROUP BY 是什么意思? afaik HAVING 只需要在 GROUP BY 之后

标签: mysql


【解决方案1】:

你是对的,你不能在 WHERE 或 HAVING 子句中调用你的别名,但除此之外我不确定你的意思; GROUP BY 和 HAVING 应该一起使用:

SELECT a.ID, sum(b.Qty*b.Price) AS Subtotal
FROM tbl_One AS a
LEFT JOIN tbl_Two AS b ON b.TwoID = a.ID
GROUP BY a.ID
HAVING sum(b.Qty*b.Price) > 100 AND sum(b.Qty*b.Price) < 200

【讨论】:

  • 你们是对的,我搞砸了查询的另一部分,并将责任归咎于 HAVING 和 GROUP BY。它有效.. 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
  • 2011-03-15
  • 2020-05-14
  • 2012-01-12
相关资源
最近更新 更多