SQL - столбцы по умолчанию - PullRequest
0 голосов
/ 20 января 2009

У меня есть следующий оператор SQL

SELECT table1.col1, table2.col2 FROM table1, table2 WHERE table1.t_id = table2.t_id
UNION
SELECT table1.col1 FROM table1 WHERE table1.col4 = null

Проблема в том, что этот синтаксис недопустим, потому что 2-й оператор не содержит того же числа столбцов, что и 1-й оператор.

Я не могу включить table2.col2 во второй оператор, потому что он мне не нужен.

Можно ли в любом случае включить второй столбец по умолчанию во 2-й оператор, чтобы я мог заставить этот запрос работать?

Ответы [ 6 ]

6 голосов
/ 20 января 2009

Да, просто используйте константу, например 1 или '.

SELECT table1.col1, table2.col2 FROM table1, table2 WHERE table1.t_id = table2.t_id
UNION
SELECT table1.col1, '' as col2 FROM table1 WHERE table1.col4 = null
3 голосов
/ 20 января 2009

Я обычно использую NULL (что должно привести к любому типу):

SELECT table1.col1, table2.col2 FROM table1, table2 WHERE table1.t_id = table2.t_id
UNION
SELECT table1.col1, NULL AS col2 FROM table1 WHERE table1.col4 = null
3 голосов
/ 20 января 2009

Может быть, это то, что вы ищете? Вам не нужно извлекать ценности из таблицы ... вы всегда можете создать их из воздуха. :)

SELECT table1.col1, table2.col2 FROM table1, table2 WHERE table1.t_id = table2.t_id
UNION
SELECT table1.col1, 'whatever' FROM table1 WHERE table1.col4 is null
1 голос
/ 20 января 2009

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

</p> <pre><code>SELECT table1.col1, table2.col2 FROM table1, table2 WHERE table1.t_id = table2.t_id UNION SELECT table1.col1, null FROM table1 WHERE table1.col4 = null

0 голосов
/ 20 января 2009

При выполнении объединения или объединения все количество столбцов должно совпадать. Вам нужно будет либо жестко кодировать значение, чтобы поместить его в этот столбец, либо запросить представление каталога sys.columns и получить значение по умолчанию для столбца, в который вы вставляете, и использовать это значение там.

0 голосов
/ 20 января 2009

Просто используйте пустые ('') кавычки в списке столбцов для столбцов, которые вам не нужны во втором операторе SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...