mysql - 如何从mysql中的临时表中选择子查询

标签 mysql sql database

我有一个 tmp 表,它从三个表中收集联合数据,并且工作正常,当尝试从此 tmp 表中选择任何列作为子查询时,问题就会开始,但我想这样做,因为我将从 tmp 表结果中进行计算,那么如何做到这一点

我看到此错误消息

[42S02][1146] Table 'projectdb.tmp' doesn't exist

这段代码的问题

(SELECT stquantity ) AS SB

我的代码是

SELECT tmp.it_code,(SELECT tmp.stquantity ) AS SB
FROM (
  SELECT
    tm.it_code AS it_code,
    2          AS ts_type,
    (
      SELECT SUM(rrg1.rpog_quantity)
      FROM d_repo_returned rpr1, d_repo_returned_grid AS rrg1
      WHERE rrg1.rpog_send_main_id = rpr1.rpo_id
            AND rrg1.rpog_item_id = tm.it_id
            AND rpr1.rpo_returned_date <= 1457996475

    )          AS stquantity,
    (SELECT SUM(rrg2.rpog_quantity)
     FROM d_repo_returned rpr2, d_repo_returned_grid AS rrg2
     WHERE rrg2.rpog_send_main_id = rpr2.rpo_id
           AND rrg2.rpog_item_id = tm.it_id
           AND rpr2.rpo_returned_date <= 1459375315

    )          AS edquantity

  FROM d_repo_returned, d_repo_returned_grid, d_items AS tm
  WHERE rpog_send_main_id = rpo_id
        AND rpog_item_id = tm.it_id
  GROUP BY tm.it_code
  UNION ALL
  SELECT
    ts.it_code AS it_code,
    3          AS ts_type,
    (
      SELECT SUM(stg1.sig_quantity)
      FROM d_send_items str1, d_send_items_grid AS stg1
      WHERE stg1.sig_send_main_id = str1.si_id
            AND stg1.sig_item_id = ts.it_id
            AND str1.si_send_date <= 1457996475

    )          AS stquantity,
    (SELECT SUM(stg2.sig_quantity)
     FROM d_send_items str2, d_send_items_grid AS stg2
     WHERE stg2.sig_send_main_id = str2.si_id
           AND stg2.sig_item_id = ts.it_id
           AND str2.si_send_date <= 1459375315

    )          AS edquantity
  FROM d_send_items str, d_send_items_grid stg, d_items AS ts
  WHERE stg.sig_send_main_id = str.si_id
        AND stg.sig_item_id = ts.it_id
  GROUP BY ts.it_code
  UNION ALL
  SELECT
    di.it_code             AS it_code,
    1                      AS ts_type,
    (SELECT SUM(di1.it_quantity)
     FROM d_items di1
     WHERE di1.it_code = di.it_code AND di1.it_date <= 1457996475
     GROUP BY di1.it_code) AS stquantity,
    (SELECT SUM(di2.it_quantity)
     FROM d_items di2
     WHERE di2.it_code = di.it_code AND di2.it_date <= 1459375315
     GROUP BY di2.it_code) AS edquantity
  FROM d_items di
  GROUP BY di.it_code
) AS tmp

最佳答案

尝试更改第一行 (SELECT tmp.it_code,(SELECT stquantity ) AS SB) 至

SELECT it_code, stquantity AS SB

这是我从你的询问中了解到的。 :)

关于mysql - 如何从mysql中的临时表中选择子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36031978/

相关文章:

sql - substring() 在配置单元中返回空白

asp.net - 无法将本地托管应用程序中的数据插入 Appharbor MySQL 数据库(超时异常)

database - 甲骨文是否面临千年虫问题?

mysql - 从一个表中选择第二个表中不存在的日期

c# - 如何在 EntityFramework 5 中使用 Transaction?

php - 如何检查用户是否关注用户列表中的另一个用户?

MySQL:在带有 INNER JOIN 的 Where 子句中面临问题

sql - 从sql server中的子查询创建临时表导致错误

mysql - 跨 MySQL 和 MongoDB/HBase 的 JOIN 以获取分析数据

php - 如何使用 mysql 数据库为我的 WordPress 网站创建访问控制