Главная » Программирование » Основы SQL. Оператор MINUS
Русфонд

Основы SQL. Оператор MINUS

9 октября 2012 - Рубрики Программирование

2904 просмотров

В сайдбар справа добавлена кнопка Google+. Если вам поможет данный материал, прошу вас нажмите на кнопку - порекомендуйте сайт в Google.

Добрый день!

Сегодняшняя статья будет короткой и посвящна оператору языка SQL Minus.

Если в предыдущей статье мы рассматривали оператор объединения результатов запроса UNION, то в данной статье мы научимся из результатов одного запроса вычитать (отбрасывать) результаты другого. Как вы уже поняли для этих целей можно использовать оператор MINUS

Синтаксис оператора довольно прост

SELECT поле1, поле2... полеN FROM таблица1 WHERE
MINUS
SELECT поле1, поле2... полеN FROM таблица2 WHERE
ORDER BY 1,2,3...

Обратите на то, что конструкция ORDER BY пишется только после последнего запроса.

Теперь немного практики…

Для контроля доступа к интернет ресурсам абонентам проставляются различные программные группы, по которым оборудование дает доступ. Задача найти абонентов с группой «abc», при этом исключить тех абонентов, у которых также проставлена группа «def»

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

SELECT username, account FROM usergroups WHERE groupname LIKE 'abc'
MINUS
SELECT username, account FROM usergroups WHERE groupname LIKE 'def'

второй вариант такой

SELECT * FROM usergroups u1
WHERE groupname LIKE 'abc'
AND NOT EXISTS (SELECT * FROM usergroups u2
                WHERE u2.id=u1.id and groupname LIKE 'def')

Насколько мне известно первый вариант работает быстрее, но при грамотном использовании индексов на таблицу можно добиться практически равнозначных по быстродействию вариантов.
На этом на сегодня все, буду рад если вашим комментариям, возможно что-то в плане оптимизации запросов подскажете — в этом я слабоват :-)

Если этот материал оказался вам полезен, порекомендуйте его в в Google, нажав кнопку Google+ справа в сайдбаре или через кнопки социальных сервисов ниже.

П.С. не забудьте оставить комментарий к статье, а также поделиться ссылкой с друзьями и коллегами через социальные сервисы или скопировав ссылку на статью ниже. Кроме того, вы можете предложить тему статьи через кнопку слева "Предложить тему статьи". Там же можно оставить пожелания, идеи по развитию сайта, а также благодарности (ну а вдруг)
П.П.С. предлагаю вам также вступить в Группа Вконтакте!группу Вконтакте, где вы сможете пообщаться с участниками на интересующие вас темы. Смелее!!!
Если вы больше времени проводите в Twitter, то за обновлениями на сайте можно следить, подписавшись на мою лентуTwitter: follow me!

Возможно вам также будут интересны статьи :

 

Предыдущие материалы из данной категории:

Комментариев: 0 ,

Понравилась статья? Поделитесь ссылкой




Оставьте комментарий:




:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

Я человек, а не бот.