SQL - столбцы по умолчанию

У меня есть следующий оператор 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

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

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

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

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
236
6

Ответы 6

Да, просто используйте константу, например 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

@ Джоэл - правда, но я не знал, что он хотел в колонке.

Otávio Décio 20.01.2009 15:57

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

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

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

Обычно я использую 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

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

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

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

Другие вопросы по теме