Изменить: ВОПРОС ИЗМЕНЕН - SQL: Извлечение всех строк из таблицы, где имена столбцов НЕ находятся в другой таблице - PullRequest
0 голосов
/ 31 августа 2011

Никогда не делал SQL раньше (насколько это возможно, я не знаю),

У меня есть две таблицы, вот так:

Table1:

Column Names:    A    B    C
Rows:            1  sdf  sdsd
                 2  seg  werr

и

Table2:

Column Names:    A    B    C     D    E    F
Rows:            1    sdf  sdsd  yuj  uui  ddd
                 1    sdf  sdsd  sss  sdd  ssw
                 1    sdf  sdsd  jut  scv  sef
                 2    seg  werr  oel  ewe  wee
                 2    seg  werr  ujf  etr  wuk
                 2    seg  werr  los  hjd  wee

РЕДАКТИРОВАТЬ: Вопрос изменен.

Как мне взять все строки со столбцами, которые являются уникальными во 2-й таблице? То есть Мне нужны только данные из D, E и F, где значения в A, B, C в Таблице 1 соответствуют значениям A, B, C в Таблице 2.

Так, например, учитывая A = 1 и B = sdf, я хочу строки:

sdsd  yuj  uui  ddd
sdsd  sss  sdd  ssw
sdsd  jut  scv  sef

Я мог бы просто пойти: SELECT * FROM Table2, ГДЕ A = '1' И B = 'sdf', но я бы получил

1    sdf  sdsd  yuj  uui  ddd
1    sdf  sdsd  sss  sdd  ssw
1    sdf  sdsd  jut  scv  sef

Ответы [ 5 ]

1 голос
/ 31 августа 2011

Просто перечислите столбцы, которые вы хотите выбрать.

Так, например, дано A='1' и B='sdf':

SELECT C,D,E,F FROM Table2 WHERE A='1' AND B='sdf' 
1 голос
/ 31 августа 2011

Самый прямой путь будет:

Select D, E From Table2

Если вы ищете что-то динамичное, решение будет зависеть от того, какого поставщика базы данных вы используете. Не существует агностического динамического решения.

0 голосов
/ 31 августа 2011

Кажется, что здесь у вас есть один из немногих случаев, когда НАТУРАЛЬНОЕ СОЕДИНЕНИЕ - правильное решение, поскольку имена ваших столбцов в обеих таблицах одинаковы.

0 голосов
/ 31 августа 2011

Как правило, для этого вам нужен доступ к системным таблицам или представлениям каталога. Точный синтаксис зависит от того, какую СУБД вы используете ...

0 голосов
/ 31 августа 2011

Требуется LEFT JOIN (или RIGHT JOIN) со специальной операцией в WHERE для поиска несоответствующих значений.

В этом случае что-то вроде этого:

SELECT Table2.*
FROM Table2 LEFT JOIN Table1 USING (SomeCommonField)
WHERE Table1.SomeCommonField IS NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...