【问题标题】:No output on EXCEPT query in SQLSQL 中的 EXCEPT 查询没有输出
【发布时间】:2017-12-14 00:35:25
【问题描述】:
   select 
merchandise.merchname, 
order_item.itemid, 
order_item.orderid
from merchandise Inner join order_item 
on merchandise.MerchName = order_item.itemid
EXCEPT
select 
MerchName,
order_item.itemid, 
order_item.orderid
from merchandise left join order_item 
on merchandise.ItemID = order_item.itemid

需要输出那些没有卖掉的。不知道我在这里做错了什么。对 MySQL 来说还是个新手。

【问题讨论】:

  • MySQL 现在支持 EXCEPT 吗?
  • 我应该接近正确输出它我收到错误:将 varchar 值“M82XTi /Marker”转换为数据类型 int 时转换失败。我感觉这是我的加入命令,最后我删除了 group by

标签: sql mysql-management


【解决方案1】:

您的加入看起来很可疑:

内连接order_item 在商品上.MerchName = order_item.itemid

merchandise.MerchName真的和order_item.itemid有相同的类型/id

查看查询的其余部分应为:

inner join order_item on merchandise.ItemID = order_item.itemid

编辑:MariaDB 在 10.3.0 版本中添加了一个 except 子句 - 但我不确定它是否存在于 MySQL 中,所以如果您实际使用 MariaDB 而不是 MySQL,您可以使用 except。

【讨论】:

  • 出现错误:选择列表中的“merchandise.MerchName”列无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
  • @jh86 我猜您通过上面的评论解决了 GROUP BY 错误,现在您在将文本列与 int 进行比较时遇到问题,看起来您的 sql 仍在将 MerchName 与 itemid 进行比较。
  • 我确实删除了 GROUP BY 命令,并且能够在一定程度上收集我需要的数据,但我没有看到什么没有售出,而这正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
  • 1970-01-01
相关资源
最近更新 更多