Я задал вопрос here. Теперь мне нужен обратный вывод. Я следующая таблица, my_table, со структурой следующим образом,Как сделать группу куском мудрым в SQL с отрицательным условием?
Name | Address
----------------
Test1 | abc_123
Test1 | abc_456
Test2 | xyz_123
Test1 | xyz_123
Test2 | xyz_456
Test3 | abc_123
Test4 | xyz_123
Test1 | xyz_456
Test3 | xyz_123
Test4 | xyz_456
мне нужен выход следующим образом,
Name
-------
Test2
Test4
мне нужно сделать группу по chunkwise и выберите Name
, таким образом, что ни один из адрес имеет префикс как abc
.
Выход Объяснение подробно:
Тест1 имеет адреса как abc_123, abc_456, xyz_123, abc_123
и, по меньшей мере, один из адреса имеет префикс как abc
. Следовательно, не на выходе. Test2 имеет адреса xyz_123, xyz_456
и ни один из них не имеет префикса abc
. Следовательно, на выходе.
x = select distinct(Name) from My_Table
y = select distinct(Name) from My_Table where Address like 'abc%'
Result = x - y
я смог достичь результата, используя 2 запросов (как показано выше), а затем с помощью вычитания операции в наборе результатов, но это может быть достигнуто в одном запросе ?
Примечание: Я использую JAVA для запроса MYSQL DB, поэтому я могу вычесть результирующие наборы. Мой размер таблицы огромен, поэтому я хочу оптимизировать количество запросов!
Awesome! Теперь, я чувствую себя глупо, поскольку я не мог думать об агрегировании. Я буду отмечать это как ответ после попытки;) – Abhishek