استعلام SQL للعثور على المستخدمين الذين ليس لديهم أي اشتراك في قائمة محددة (كثير إلى كثير)

StackOverflow https://stackoverflow.com/questions/1827897

سؤال

وجود طاولتين، "المستخدمون" و "قوائم"، وعدد العديد من الاشتراكات "الجدول يتعلق بالمستخدمين بالقوائم (وبالتالي وجود مفاتيح أجنبية user_id و list_id)، ما سيكون استعلام SQL واحد للعثور على جميع المستخدمين الذين ليس لديهم أي اشتراك مع معين list_id (بشكل طبيعي بما في ذلك المستخدمين الذين ليس لديهم اشتراكات على الإطلاق)؟

هل كانت مفيدة؟

المحلول

الوقت للخروج not exists تكرارا:

select
  u.user_id
from
  users u
where
  not exists (
    select 1 from subscriptions s where s.user_id = u.user_id and s.list_id = N
  )
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top