Поскольку они - в основном объектно-ориентированные глобальные переменные, можно обычно разрабатывать классы таким способом так, чтобы Вам не были нужны они.
Я думаю, что ответ Джослис даст только половину результатов. Вам нужно объединить другую таблицу. В качестве альтернативы вы можете выполнить полное внешнее соединение.
select a.Id, a.Name from Table1 a left outer join Table2 b on a.Name = b.Name where b.Id is null
UNION ALL
select a.Id, a.Name from Table2 a left outer join Table1 b on a.Name = b.Name where b.Id is null
create table #t1 (Id int, name varchar(50))
create table #t2 (Id int, name varchar(50))
insert #t1 values (1, 'Prashant')
insert #t1 values (2, 'Ravi')
insert #t1 values (3, 'Gaurav')
insert #t1 values (5, 'Naween')
insert #t1 values (7, 'Sachin')
insert #t2 values (1, 'Prashant')
insert #t2 values (2, 'Ravi')
insert #t2 values (4, 'Alok')
insert #t2 values (6, 'Raja')
select isnull(#t1.id, #t2.id), isnull(#t1.name,#t2.name) from #t1
full outer join #t2 on #t1.id = #t2.id
where #t2.Id is null or #t1.id is null
результаты:
3 Gaurav 5 Naween 7 Sachin 4 Alok 6 Raja
Select Id, Name
from Table1
where Id not in (select Id from Table2)
UNION
Select Id, Name
from Table2
where Id not in (select Id from Table1)
Вы действительно МОЖЕТЕ сделать это с помощью одного запроса:
SELECT COALESCE(table1.ID, table2.ID) AS ID,
COALESCE(table1.Name, table2.Name) AS Name
FROM table1
FULL JOIN table2
ON table1.ID = table2.ID
WHERE table1.ID IS NULL OR table2.ID IS NULL
приведет к:
ID Name
----------- --------
3 Gaurav
5 Naween
7 Sachin
6 Raja
4 Alok
select t.ID, t.Name from Table1 t
left outer join Table2 tt
ON tt.name = t.name
where tt.id is null
union all
select t.ID, t.Name from Table2 t
left outer join Table1 tt
ON tt.name = t.name
where tt.id is null
Поскольку вы хотите получить несогласованные записи из обеих таблиц, я думаю, вам понадобятся два запроса (по одному для каждой таблицы), которые будут объединены вместе:
(SELECT t1.Id, t1.Name
FROM Table1 as t1
LEFT OUTER JOIN Table2 as t2 on t1.Name = t2.Name
WHERE t2.Id is null)
UNION
(SELECT t2.Id, t2.Name
FROM Table2 as t2
LEFT OUTER JOIN Table1 as t1 on t2.Name = t1.Name
WHERE t1.Id is null)
SELECT * FROM
(
SELECT * FROM Table1
MINUS
SELECT * FROM Table2
)
UNION
(
SELECT * FROM Table2
MINUS
SELECT * FROM Table1
)
или
SELECT * FROM
Table1 a
FULL OUTER JOIN
Table2 b
ON
a.ID=b.ID AND a.Name=b.NAME
WHERE
a.ID IS NULL OR b.ID IS NULL
select a.Id, a.Name
from Table1 a
left outer join Table2 b
on a.Name = b.Name
where b.Id is null
РЕДАКТИРОВАТЬ: Мой ответ неверен .... он даст вам только результаты из Таблицы 1, которых нет в Таблице 2. Спасибо, что указали на это.