2014-01-04 2 views
0

Я пытаюсь выполнить UNION между двумя таблицами, имеющими различное количество столбцов. Из this question Я знаю, что вам нужно добавить дополнительные столбцы нулевые на столе с меньшим количеством столбцов, но делают это приводит следующее сообщение об ошибке:UNION две таблицы с различным количеством столбцов

Error code -1, SQL state 42X01: Syntax error: Encountered "null" at line 1, column 75. 

Запрос является:

SELECT column1, column2 
from APP.lefttable 
WHERE column2 = 'value' 
union all 
select column1, null as column2 
from APP.righttable"; 

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

Если это помогает, я делаю это в приложении Java с использованием Apache Derby в качестве моей РСУБД.

+0

Запрос выглядит нормально. Можете ли вы удалить 'как column2' из второй части объединения? –

+0

Я попробовал это раньше, просто попробовал еще раз и получил ту же ошибку. – user1849060

+0

Можете ли вы разместить точный запрос, который у вас есть, без изменения имен таблиц или столбцов? Я подозреваю, что используется зарезервированное ключевое слово. Или вы пропустили запятую перед 'NULL' –

ответ

1

Попробуйте

SELECT * from 
    (
    SELECT column1, column2 from APP.lefttable WHERE column2 = 'value' 
    union all 
    SELECT column1,NULL AS Column2 from APP.righttable 
    ) 
+1

Ему нужен псевдоним для производной таблицы - не уверен в Derby, но, безусловно, в большинстве СУБД. –

+0

К сожалению, указанная выше ошибка отсутствует. Кажется, что Дерби очень болезнен для такого рода вещей. Ваш пример работает в MySQL (просто попробовал его на другой БД), поэтому я в тупике. – user1849060

0

Интересно, если column2 вашей производной таблицы определяется как NOT NULL на основе первого запроса в объединении. Что делать, если вы переключите свои запросы:

select column1, null as column2 from APP.righttable" 
union all 
SELECT column1, column2 from APP.lefttable WHERE column2 = 'value'; 
Смежные вопросы