2014-01-20 4 views
2

У меня есть 2 стола; каждый из них имеет столбец с именем «цвет».показать разные данные из двух таблиц

Цвета в первой таблице:

  • Зеленый
  • Синий
  • Красный

Цвета во второй таблице:

  • Зеленый
  • Blue

Мне нужен запрос, который возвращает «Красный», потому что он не находится в обеих таблицах. Я попытался это:

select color 
from tb1_color a 
join tb2_color b 
on a.color = b.color 

Я не могу найти правильный присоединиться ...

+0

Возможный дубликат [SQL-запрос для извлечения данных из двух таблиц с условием «не в состоянии»] (http://stackoverflow.com/questions/16941982/sql-query-to-fetch-the-data-from- two-tables-with-not-in-condition) – jww

ответ

0

Если вы используете SQL Server, вы можете использовать FULL JOIN:

SELECT ISNULL(T1.Color,T2.Color) 
FROM Table1 T1 
FULL JOIN Table2 T2 
    ON T1.Color = T2.Color 
WHERE T1.Color IS NULL OR T2.Color IS NULL 
+0

Поддерживает ли mysql полное соединение? – scraatz

+0

@scraatz не уверен, но я видел тег SQL Server. Должен был прояснить вопрос – Lamak

+0

@scraatz: нет, MySQL не поддерживает полное внешнее объединение. Вы должны пометить свой вопрос с помощью СУБД, которую вы используете, а не с произвольным списком СУБД. –

0

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

SELECT color FROM tb1_color tb1 WHERE tb1.color NOT IN (SELECT color FROM tb2_color) 

SELECT color FROM tb1_color tb1 WHERE tb1.color NOT IN (SELECT color FROM tb2_color) 
UNION ALL 
SELECT color FROM tb2_color tb2 WHERE tb2.color NOT IN (SELECT color FROM tb1_color) 

ли это возвращение, что вы ищете?

0

Этот запрос получает все цвета, которые находятся в T1, которые не в T2:

select color from T1 except select color from T2 

Этот запрос получает все цвета, которые находятся в T2, которые не в T1:

select color from T2 except select color from T1 

Если взять объединение этих двух запросов, вы получите все цвета, которые не в обеих таблицах:

select color from T1 except select color from T2 
union 
(select color from T2 except select color from T1) 

UNI ON и EXCEPT являются стандартными операторами SQL.

Смежные вопросы