mysql - 在mysql中使用虚拟列

标签 mysql sql database select

我有如下 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 来获取剩余数量?

最佳答案

如果你将它包装在子查询上你可以这样做,但是如果它定义在同一级别你就不能使用别名进行计算,

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
) 

关于mysql - 在mysql中使用虚拟列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15193972/

相关文章:

javascript - 为什么 async.each Nodejs 不能正常工作?

mysql - 崩溃后启动 MySQL 时出错

mysql - navicat lite mysql gui : Unknown column in 'field list' 错误

php - 如何从多次包含该值的表中仅获取 1 个结果?

mysql - 自定义自增列

MySQL - 为每 X 行选择 1

mysql - 为什么这个复杂的删除 SQL 查询不起作用?

mysql:如果存在则更新,否则插入,并且在两种情况下都返回 id

mysql - 如果我们通过同一字段的不同值进行搜索,可以在 SQL 查询中将 OR 替换为更短的条件吗

php - 在自定义编码论坛的正确标题下显示类别