我正在使用DB2开发一个应用程序,
我有表products、price和cost,这些表以如下方式存储产品数据:
正如您所看到的,在本例中,产品可能有价格,但没有分配成本(因此该行不存在,这不像产品的成本可以为空)。
我想做的是获取所有分配了价格但未分配成本的产品的id,因此结果应该是:
我想我不能做外部左或右连接,因为为了做,我需要两个表(价格和成本)都有id。
我不太确定我使用的是什么版本的DB2(我使用的是与DB2交互的预配置软件),因此如果您使用SQL Server语法,它将对我有所帮助,因为它与DB2非常相似。
英译汉有人能帮我吗?
5条答案
按热度按时间vs91vp4v1#
这是一个简单的
left join
/where
:您也可以使用
not exists
(和not in
,但在使用子查询时我不建议这样做)。fhg3lkii2#
在这种情况下,可以使用左联接:
带有where子句示例:
有关Sql Server left join的更多信息
j8yoct9x3#
这种情况就是SQL中存在语句
EXISTS
和NOT EXISTS
的原因:它是不言自明的,在这种简单的情况下比其他解决方案更有效。
t2a7ltrp4#
在DB2中,它将是:
58wvjzkj5#
由于这个问题是一般性的,我来这里是为了寻找关于使用LINQ连接的进一步解释,我想我应该在这里发布我的解决方案。我使用了LEFT OUTER JOIN in LINQ上的帖子,它有一个详细的示例,我修改了它以适合这个示例,然后将它输入到LINQPad中。