Минус оператор в sql

Я пытаюсь создать SQL-запрос с минусом.

У меня query1, который возвращает 28 строк с 2 столбцами У меня есть query2, который возвращает 22 row2 с теми же 2 столбцами в запросе 2.

когда я создаю запрос query1 минус запрос 2, он должен показывать только 28-22 = 6 строк. Но он показывает все 28 строк, возвращаемых query1.

Пожалуйста, порекомендуйте.

 user55454625 июн. 2012 г., 22:59
Ну, по-видимому, ни один из кортежей не вернулсяquery2 отображаются в виде строк вquery1.
 dwerner25 июн. 2012 г., 22:57
(Принимая оракула) Дляminus чтобы работать, весь ряд должен точно совпадать.
 Joel Coehoorn20 февр. 2014 г., 21:20
-1 за то, что никогда не отвечал на вопросы о том, что это за rdbms.
 dwerner25 июн. 2012 г., 22:55
На какую базу данных вы нацеливаетесь? Я только когда-либо использовалminus на оракуле, лично. Я знаю, что он не существует в такой форме, например, на Sql Server.
 Martin Smith25 июн. 2012 г., 22:56
Разместите свой запрос и пример данных с обеих сторон минуса?

Ответы на вопрос(6)

то общая форма, которую вы хотите, - это основной запрос во внешнем выборе и вариант другого запроса в предложении «не существует».

select <insert list of fields here>
from mytable a
join myothertable b 
on b.aId = a.aid
where not exists (select * from tablec c where a.aid = c.aid) 

(10), а другое - char (20), и у них обоих есть строка "TEST" в них. Они могут «выглядеть» тот же самый.

Если база данных, над которой вы работаете, поддерживает «INTERSECT», попробуйте этот запрос и посмотрите, сколько из них идеально соответствует результатам.

select field1, field2 from table1
intersect 
select field1, field2 from table2

Чтобы получить ожидаемые результаты, этот запрос должен дать вам 22 строки.

 25 июн. 2012 г., 23:07
Опять ты имеешь ввиду 22, верно? ;п
 25 июн. 2012 г., 23:06
Если 22 запроса являются общими в запросе 1 и query2, то запрос MINUS даст 6 строк, которые не являются общими для обеих строк. Мой ответ состоял в том, чтобы подтвердить, что данные соответствуют ожиданиям ОП.
 25 июн. 2012 г., 23:04
ОП ищет 6 строк, а не 22 (при условии, что 26 - опечатка).
 14 июл. 2014 г., 12:15
это не то, что спрашивает ОП. Это не отвечает на вопрос.
 25 июн. 2012 г., 23:08
да, когда я говорю 26, я имею в виду 22: D

МИНУС работает по тому же принципу, что и в заданных операциях. Предположим, если вы установили A и B, A = {1,2,3,4}; B = {3,5,6} тогда A-B = {1,2,4}

Если A = {1,3,5} и B = {2,4,6} тогда A-B = {1,3,5}. Здесь количество (A) до и после операции MINUS будет одинаковым, поскольку оно не содержит никаких перекрывающихся членов с набором B.

В аналогичных строках может быть, что результирующий набор, полученный в запросе 2, может не соответствовать условиям с результатом query1. Следовательно, вы все еще получаете 28 вместо 6 строк.

Надеюсь это поможет.

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

SELECT TaskID, TaskType
FROM Tasks
EXCEPT
SELECT TaskID, TaskType
FROM Tasks
WHERE Username = 'Vidya'

Это вернуло бы все задачи, которые вам не были назначены. Надеюсь, это поможет.

которые не содержатся во втором запросе.

В вашем случае например A = {1,2,3,4,5 ... 28} И B = {29,30}, тогда A-B = {1,2,3 .... 28}

select field1, field2, . field_n
 from tables
 MINUS
 select field1, field2, . field_n
 from tables;
 25 июн. 2012 г., 23:03

Ваш ответ на вопрос