Sql 选择没有外键或外键不足的主键

Sql 选择没有外键或外键不足的主键,sql,sqlite,join,Sql,Sqlite,Join,我想获得所有没有外键或没有足够号码的充电id,作为对电源的确认 比如说, Charge Table: id confirmation_to_supply Pay Table: id charge_id 让我们重视一下 Charge Table: id: 1 confirmation_to_supply: 1 id: 2 confirmation_to_supply: 2 id: 3 confirmation_to_supply: 3 Pay Table: id: 1

我想获得所有没有外键或没有足够号码的充电id,作为对电源的确认

比如说,

Charge Table:
 id
 confirmation_to_supply

Pay Table:
 id
 charge_id
让我们重视一下

Charge Table:
 id: 1  confirmation_to_supply: 1
 id: 2  confirmation_to_supply: 2
 id: 3  confirmation_to_supply: 3

Pay Table:
 id: 1 charge_id: 2
 id: 2 charge_id: 2
 id: 3 charge_id: 3
结果应该是

charge_id
-----------
    1
    3
所以应该出现1,因为pay表中没有这样的外键 3应该出现,因为在充电表中没有足够的外键作为对电源的确认

我的问题与此非常相似:

此查询只提供空值

  charge_id
-----------
    1
我还需要身份证3

Thank's

您可以使用group by和having子句执行此操作:

您可以使用GROUPBY和having子句执行此操作:


如果在WHERE语句中添加OR,该语句显示外键数小于2的键,该怎么办

select char.id
 from Charge AS char
 left outer join Pay AS p on p.charge_id = char.id
 where p.charge_id is null OR (SELECT COUNT(p.charge_id) FROM Pay) < 2

如果在WHERE语句中添加OR,该语句显示外键数小于2的键,该怎么办

select char.id
 from Charge AS char
 left outer join Pay AS p on p.charge_id = char.id
 where p.charge_id is null OR (SELECT COUNT(p.charge_id) FROM Pay) < 2

非常感谢您的快速回答!非常感谢您的快速回答!
select char.id
 from Charge AS char
 left outer join Pay AS p on p.charge_id = char.id
 where p.charge_id is null OR (SELECT COUNT(p.charge_id) FROM Pay) < 2