MySQL table 合并后得到错误的数据
MySQL table get the wrong data after union
我尝试使用 union for 3 table 创建视图,每个 table 都成功地处理了正确的数据。在我尝试 union 之后,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 数据类型仍然无效。
我怀疑是因为您选择 TotalQtySpb
一次作为 integer
,两次选择 varchar
,所以请尝试在第三个和第二个查询中替换为:
'0' AS TotalQtySpb,
为此:
0 AS TotalQtySpb,
虽然你没说哪里不对,所以只是猜测。
我尝试使用 union for 3 table 创建视图,每个 table 都成功地处理了正确的数据。在我尝试 union 之后,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 数据类型仍然无效。
我怀疑是因为您选择 TotalQtySpb
一次作为 integer
,两次选择 varchar
,所以请尝试在第三个和第二个查询中替换为:
'0' AS TotalQtySpb,
为此:
0 AS TotalQtySpb,
虽然你没说哪里不对,所以只是猜测。