【问题标题】:Using virtual column in mysql在mysql中使用虚拟列
【发布时间】:2013-02-18 02:14:25
【问题描述】:

我有如下的mysql查询:

SELECT
  company_name,
  SUM(purchase_qty * num_of_certificate) AS total_purchase_qty,
  total_sold_qty,
  (total_purchase_qty - total_sold_qty) AS rem_qty
FROM tbl_company
  JOIN tbl_share_purchase
ON purchase_company_id = tbl_company.id
  JOIN (SELECT
      sold_company_id,
      SUM(sold_qty)   AS total_sold_qty
    FROM tbl_share_sales
    GROUP BY sold_company_id) s
ON s.sold_company_id = tbl_company.id
GROUP BY purchase_company_id

是否可以使用 (total_purchase_qty - total_sold_qty) AS rem_qty 来获取剩余数量?

【问题讨论】:

  • 是的,当然。我得到错误代码:1054 Unknown column 'total_purchase_qty' in 'field list'

标签: mysql sql database select


【解决方案1】:

如果将其包装在子查询中,则可以这样做,但如果别名定义在同一级别,则不能使用别名进行计算,

SELECT  company_name,
        SUM(purchase_qty * num_of_certificate) AS total_purchase_qty,
        total_sold_qty,
        (SUM(purchase_qty * num_of_certificate) - total_sold_qty) AS rem_qty
FROM    tbl_company
        JOIN tbl_share_purchase
            ON purchase_company_id = tbl_company.id
        JOIN 
        (
            SELECT  sold_company_id,
                    SUM(sold_qty)   AS total_sold_qty
            FROM    tbl_share_sales
            GROUP   BY sold_company_id
        ) s ON s.sold_company_id = tbl_company.id
GROUP   BY purchase_company_id

这里使用子查询,

SELECT  company_name,
        total_purchase_qty,
        total_sold_qty,
        (total_purchase_qty - total_sold_qty) AS rem_qty
FROM
(
    SELECT  company_name,
            SUM(purchase_qty * num_of_certificate) AS total_purchase_qty,
            total_sold_qty
    FROM    tbl_company
            JOIN tbl_share_purchase
                ON purchase_company_id = tbl_company.id
            JOIN 
            (
                SELECT  sold_company_id,
                        SUM(sold_qty)   AS total_sold_qty
                FROM    tbl_share_sales
                GROUP   BY sold_company_id
            ) s ON s.sold_company_id = tbl_company.id
    GROUP   BY purchase_company_id
) 

【讨论】:

    猜你喜欢
    • 2016-10-08
    • 1970-01-01
    • 2010-10-02
    • 2015-05-25
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 2011-06-13
    • 2020-11-22
    相关资源
    最近更新 更多