我想判断poi_Equipement表(关系表)是否与数据表中的数据对应(即双向判断)

https://dbfiddle.uk/gFMjbIpX

检测到WC(在PoI_Equipement中)是额外的(因为它不在数据表中),并且wine 店不在Poi_Equipement中,所以与数据表相比它是不存在的

我不明白为什么要用拉奎特,除了他只回答我住的wine 店. 我要他回答我wine 店和厕所的问题.

select object from data where subject = 'url1'
except
select subject from poi_equipement inner join equipement on poi_equipement.equipement_id = equipement.id;

理想情况下,我想知道我在位置设备、数据或两个表中有什么不同

推荐答案

完全的外连接就可以了

with params as (
select 'url1' as subject),
data_object as (
select d.object
  from data d
  join params prm
    on d.subject = prm.subject),
equipment_subject as (    
select e.subject
  from poi_equipement pe 
  join poi p
    on pe.poi_id = p.id
  join equipement e 
    on pe.equipement_id = e.id 
  join params prm
    on p.id_url = prm.subject)
select d.object    as data,
       e.subject   as poi_equipment
  from data_object d
  full outer
  join equipment_subject e
    on d.object = e.subject
 where d.object is null
    or e.subject is null;

结果:

data |poi_equipment|
-----+-------------+
hotel|             |
     |wc           |

如果您需要查看哪一项同时出现在两个位置,则可以删除where条款.

Postgresql相关问答推荐

读取扩展坞合成中的UDP:IO/超时

使用函数返回值作为另一个函数的参数

PostgreSQL plpgsql函数问题

为什么在使用PostGIS时,英国郡的几何图形会出现在几内亚湾?

忽略 split_part 的第 n 个分隔符之后

右连接 postgresql 出现语法错误

PostgreSQL:在 select 和 group by 中使用不同的列不会导致错误

如何使用 go-pg 包删除所有记录

无法使用golang在postgresql中使用自定义类型插入/更新数据

查找列中的数据是否满足sql中的数据类型条件

从网址获取第一个字符串

如何将 grafana 与 Google Cloud SQL 集成

knex: Select 特定日期范围内的行

datagrip 无法应用更改 此表是只读的

如何确定 NULL 是否包含在 Postgres 的数组中?

H2 postgresql mode模式似乎不起作用

Postgres 类似于 SQL Server 中的 CROSS APPLY

在 postgres 中插入语句用于没有时区 NOT NULL 的数据类型时间戳,

PostgreSQL - 必须出现在 GROUP BY 子句中或在聚合函数中使用

postgresql中的移动平均线