Вызов с Не равно оператору - PullRequest
0 голосов
/ 23 мая 2018

У меня есть проблема, чтобы решить.Я хотел бы получить из следующей таблицы страны, где пол не равен женскому, используя только условие where.Я не хочу использовать подзапрос, например: выберите страну из таблицы, где страна не указана (выберите страну из таблицы, где пол = «женский»)

Есть идеи?

ID  Name    Gender  Country
1   Jhon    Male    USA
2   Katie   Female  USA
3   Steave  Male    UK
4   Gerry   Female  UK
5   Brad    Male    AUS

С уважением, Чандра.

Ответы [ 4 ]

0 голосов
/ 23 мая 2018

Возможно, я неправильно понял ваш вопрос, но почему вы не используете:

SELECT country FROM table WHERE gender NOT IN('Female')

Или это подзапрос?

0 голосов
/ 23 мая 2018

Вы можете избежать подзапроса и получить полные строки, используя:

SELECT TOP 1 WITH TIES *
FROM tab
ORDER BY SUM(CASE WHEN Gender='Female' THEN 1 ELSE 0 END) 
         OVER(PARTITION BY Country);

DBFiddle Demo - SQL Server

0 голосов
/ 23 мая 2018

Вы можете сделать:

select country
from t
except
select country
from t
where gender = 'Female';

Как оператор набора, except удаляет дубликаты.

0 голосов
/ 23 мая 2018

Использование not exists

select t.*
from table t
where not exists (select 1 
                  from table 
                  where Country = t.Country and 
                        Gender = 'Female'
                  );

Вы также можете использовать group by, например:

select Country 
from table t
group by Country 
having sum(case when Gender = 'Female' then 1 else 0 end) = 0;
...