Postgresql – 如何获取表中与另一个表中没有匹配的条目
我有一个问题,但我真的不知道怎么问!请多多包涵:
SELECT sc.*,scd.siteid,scd.desc_frontend FROM shipping_code sc LEFT OUTER JOIN shipping_code_description scd ON scd.shippingid=sc.shippingid AND scd.siteid IN (SELECT siteid FROM site_international WHERE published='t') 为了解释上述情况,我们在一个名为“shipping_code”的表格中有发货(交货)代码,而且因为我们有一个多语言网站,所以我们在“shipping_code_description”中有另一个用于这些代码的语言描述表. 上述SELECT查询获取所有的运输代码,并且只有这些已发布站点的语言描述. 现在,我们也想知道哪些运输代码在某些网站上没有描述.如果发货代码是全新的,那么将为该代码返回1行(因为LEFT OUTER JOIN). ‘scd.siteid’和’scd.desc_frontend’将为NULL. 但是,如果存在英国(英文)网站的描述,但FR和DE的描述不存在,则上述查询将只返回一行,而不是三行.如何知道特定运输代码的DE和FR说明丢失? 这是我的选择: 1)我可以以某种方式在一个查询内完成这一切.一定有办法(以前从来没有使用过UNION,除了以前,我不知道这些是我应该使用的). 2)或者我可以简单地做另一个查询 以上将给我所有出版的网站.然后,使用PHP(我用来代码我的网站),对于上述较大查询的每个结果,我会检查并查看是否缺少任何描述.例如.以上的siteid查询将返回3个ID(UK,DE,FR).那么如果一个特定的运输代码只返回一个英国行,我会知道DE和FR丢失,我可以把它标记给我的客户端. 请指示是否存在更好的选项“1”? 非常感谢!
也许我不明白你的问题,但是如果你想获得一个表中没有匹配的条目在另一个表中,我可以给你一个简单的代码段.
选择左侧表格中不在右侧表格中的所有行. SELECT l.* FROM t_left l LEFT JOIN t_right r ON r.value = l.value WHERE r.value IS NULL (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |