联合后MySQL表获取错误的数据

时间:2016-05-30 07:56:28

标签: mysql union

我尝试使用union for 3 table进行查看,每个表都使用正确的数据成功运行。在我尝试联合之后,totalqtyspb上的数据得到了错误的数据。

数据类型是varchar。

这是我的代码

SELECT
  p.PONumber,
  p.POdate,
  p.customername,
  p.description,
  p.poqty,
  SUM(q.deliveryqty) AS TotalQtySpb,
  p.poqty-SUM(q.deliveryqty) AS OTSPO
FROM
  tb_po p
INNER JOIN
  tb_rls q ON p.PONumber = q.PONumber AND p.description = q.description
GROUP BY
  p.PONumber,
  p.PODate,
  p.customername,
  p.description,
  p.poqty
UNION
SELECT
  PONumber,
  PODate,
  CustomerName,
  Description,
  POQty,
  '0' AS TotalQtySpb,
  poqty AS OTSPO
FROM
  tb_po
WHERE
  poreleasedate = ''
UNION
SELECT
  PONumber,
  PODate,
  CustomerName,
  Description,
  POQty,
  '0' AS TotalQtySpb,
  poqty AS OTSPO
FROM
  tb_po
WHERE
  poreleasedate != '' AND OutboundInbound = ''

我无法解释为什么totalqtyspb上的数据得到错误的数据,已经尝试更改为int数据类型仍然无效。

1 个答案:

答案 0 :(得分:2)

我怀疑是因为您选择TotalQtySpb一次为integer,两次为varchar,因此请尝试替换第三和第二个查询:

  '0' AS TotalQtySpb,

对此:

  0 AS TotalQtySpb,

虽然你没有说出什么是错的,所以它只是一个猜测。