2015-11-19 4 views
-1

Предположим, у меня есть таблица SQL members с двумя столбцами: username и sponsor:Выберите значения в одном столбце, где это значение не появляются в другом столбце 5 раз

username | sponsor 
------------------ 
bill  | bob 
username1| bill 
username2| username2 
username3| bill 
username4| bill 
username5| bill 
username6| bill 
username7| bill 
collin | username6 
austin | usename3 

Я хотел бы написать запрос, который возвращает все имя пользователя, где в этих именах пользователей не появляются 5 раз в столбце спонсора. Как написать этот SQL-запрос?

Желаемая Выход:

username1 
username2 
username3 
username4 
username5 
username6 
username7 
collin 
austin 
+0

Что-то вроде SELECT * FROM members WHERE username NOT IN (SELECT username FROM members GROUP BY sponsor WHERE COUNT (*) <> 5). –

+0

Вы получили сообщение об ошибке или произвели неправильные результаты? –

ответ

0

Я думаю, что это должно работать:

SELECT m.username 
    FROM members m, 
    (SELECT sponsor, COUNT(sponsor) 
     FROM members 
     GROUP BY sponsor 
     HAVING COUNT(sponsor) < 5) c 
    WHERE m.username = c.sponsor 

Я предполагаю, что из вашего выхода образца вы хотите пользователей, которые спонсируемые меньше, чем 5 других членов.

+0

Единственное, что вы только что показывали username2 имя_пользователя6 имя_пользователя3 – John

0

Этот вопрос ответил на эту проблему.

SELECT m.username FROM members m, (SELECT sponsor, COUNT(sponsor) FROM members GROUP BY sponsor HAVING COUNT(sponsor) >= 5) c WHERE m.username != c.sponsor 

Спасибо Дарвин!

Смежные вопросы

 Смежные вопросы