首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么mysql查询返回不同的结果?

问为什么mysql查询返回不同的结果?
EN

Stack Overflow用户
提问于 2015-06-24 07:01:32
回答 1查看 63关注 0票数 0

使用以下select查询组合两个表:

代码语言:javascript
复制
SELECT item_name,batch_no,invoice_no,invoice_date,damaged_qty,qty,unit_vat,unit_discount,unit_price,packing,free FROM
(SELECT item_name,batch_no,invoice_no,invoice_date,damaged_qty,qty,unit_vat,unit_discount,unit_price,packing,free
FROM damage_stocks AS S UNION ALL
SELECT item_name,batch_no,invoice_no,invoice_date,qty,qty,unit_vat,free,unit_discount,unit_price,packing
FROM purchase_invoice AS D)  AS alias_table
GROUP BY  invoice_no,item_name,batch_no
HAVING COUNT(*)=1 and invoice_no=1
ORDER BY item_name,batch_no,qty;

结果产出:

代码语言:javascript
复制
'MM TONE_', '1', '1', '2015-06-24', 10, 10, 0.00, 2.00, 0.00, 20.00, '10'

您可以看到,它将free显示为10,但在我的damage_stocks表中,空闲列不包含值,而在purchase_invoice表中,列free包含invoice_no 1的2。

代码语言:javascript
复制
select free from purchase_invoice where invoice_no = 1;

产出:

代码语言:javascript
复制
2

这

代码语言:javascript
复制
select free from damage_stocks where invoice_no = 1;

返回一个空值,因为没有添加任何值。

我的问题是,

  • 为什么free列显示10而不是2,因为purchase_invoice中的空闲列包含invoice_no 1的2?
  • 如何将输出作为free的输出作为2而不是10?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-24 07:10:58

因为在purchase_invoice查询中“空闲”列的序列不匹配。查询应该是:

代码语言:javascript
复制
SELECT item_name,batch_no,invoice_no,invoice_date,qty,qty,unit_vat,unit_discount,unit_price,packing,free FROM purchase_invoice AS D

我在select序列的末尾放置了“空闲”列。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31019804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档