用于获取未在拼车数据库模式中提供任何乘车服务的用户的 sql 命令

问题描述

拼车数据库架构

Carpooling Database Schema

ride_users 表中的 users 也是 RIDE 表中的ride provider。 我必须从 user_details 表中确定没有提供任何乘车服务的用户详细信息,即他们不是乘车服务提供商。

试过了,但没有得到想要的结果。

select r1.user_id,u.*
from ride_users r1,user_details u
where r1.user_id <> (select distinct r1.user_id 
                     from ride_users r1,ride r2 
                     where r1.ride_id = r2.ride_id 
                     and r1.user_id = r2.ride_provider_id
                     group by r1.user_id);`

解决方法

根据您的描述,这听起来像是您想要的:

SELECT u.*
FROM user_details u
WHERE NOT EXISTS (SELECT 1 FROM ride_users r1 
    WHERE r1.user_id = u.user_id)
,

使用 Left join 并检查 null 以查看实体是否存在于第二个表中。

SELECT u.*
FROM user_details u
LEFT JOIN ride r ON u.user_id = r.ride_provider_id
WHERE r.ride_provider_id IS NULL