2016-12-31 3 views
0

Я просто хочу получить не общее значение из таблицы 1, относящейся к таблице 2, как показано на рисунке ниже.
Как отображать необычные значения, как я показан в результате в изображении ниже
это запрос я использую, но его не показывает результат, как я ожидалКак получить необычное значение из таблицы 1 и таблицы 2

select * from t1.* from Table1 t1 inner join Table2 t2 on t1.Name <> t2.Name 

enter image description here

+0

Просьба пояснить логику. Почему в результате получается «SQL 2K12»? –

+1

http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/285557#285557 –

ответ

1
SELECT * FROM TableA 
FULL OUTER JOIN TableB 
ON TableA.name = TableB.name 
WHERE TableA.id IS null 
OR TableB.id IS null 

В случае внешнего соединения необычные строки нет в других генерации NULL поля в каждой строке. Мы в основном выбираем его так.

+0

благодаря его работе – user6503334

0

Использование Except и Union All , Не знаю, почему "SQL 2K12" в результате, так как он присутствует в обеих таблицах

select col from table1 
except 
select col from table2 
Union all 
select col from table2 
except 
select col from table1 
+0

i обновленное изображение – user6503334

+0

Я получаю сообщение об ошибке: Msg 205, уровень 16, состояние 1, строка 1 Все запросы, объединенные с использованием оператора UNION, INTERSECT или EXCEPT, должны иметь равное количество выражений в своих целевых списках. – user6503334

+0

@ user6503334 - Как вы заменили исходный запрос. Количество столбцов в списке должно совпадать и должно совпадать с –

0

Другой вариант

Select col 
From (
     Select col from Table1 
     Union All 
     Select col from Table2 
    ) A 
Group By col 
Having count(*)=1 
0

Это в соответствии с вашими примерами

SELECT * -- or SELECT COALESCE(t1.Name,t2.Name) As Name 
FROM 
    Table1 t1 
    FULL OUTER JOIN Table2 t2 ON t1.Name = t2.Name 
WHERE 
    t1.Name IS NULL OR t2.Name IS NULL; 

Если есть только одна колонка в обеих таблицах (или две таблицы имеют одинаковые столбцы), и если вы не хотите их колонны повторяющиеся

SELECT * 
FROM 
    Table1 
UNION 
SELECT * 
FROM 
    Table2 

EXCEPT 
(
SELECT * 
FROM 
    Table1 
INTERSECT 
SELECT * 
FROM 
    Table2 
) 
Смежные вопросы