问题描述
拼车数据库架构
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