Android 选择(外键)表中没有对应行的行
我有两个表,分别是Customers和Orders,主键是Customer.CustomerID,外键是Order.CustomerID我想选择所有没有在Android Sqlite中下订单的客户这是我的查询Android 选择(外键)表中没有对应行的行,android,sqlite,Android,Sqlite,我有两个表,分别是Customers和Orders,主键是Customer.CustomerID,外键是Order.CustomerID我想选择所有没有在Android Sqlite中下订单的客户这是我的查询 select * from Customer where not exists (select * from Customer inner join Order on Customer.CustomerID = Order.CustomserID ) 但它不工作,返回0行 您的子查询不
select * from Customer where not exists (select * from Customer inner join Order on Customer.CustomerID = Order.CustomserID )
但它不工作,返回0行 您的子查询不是a,即与外部查询没有关系。
(内部Customer
表与外部表完全独立。)
只要数据库中存在任何记录,exists子句对于外部Customer
表中的每个记录都是真的
您要检查一个特定的客户
记录是否有匹配的订单:
SELECT *
FROM Customer
WHERE NOT EXISTS (SELECT 1
FROM Order
WHERE CustomerID = Customer.CustomerID)
或者,对这两个表进行检查,并检查哪些客户没有获得匹配的订单:
SELECT Customer.*
FROM Customer
LEFT JOIN Order USING (CustomerID)
WHERE Order.OrderID IS NULL
或者,只需获取订单表之外的所有客户:
SELECT *
FROM Customer
WHERE CustomerID NOT IN (SELECT CustomerID
FROM Order)
另一个问题:为什么要使用(使用)我们可以像这样重写此查询select*from plannedVisites left join CheckedVisits on plannedVisites.PvId=CheckedVisits.PvId,其中CheckedVisits.PvId为null
,它会工作得很好