2015-08-07 3 views
0

Я изучаю некоторые операторы SQL, я не могу понять, почему мой код не может выполнить из моей базы данных:Объединение двух операторов выбора Использование UNION

(SELECT Time FROM mytable) 
UNION 
(SELECT Travel FROM mytable); 

Данное заявление запрещено.

+0

Вы выбрали базу данных? перед запуском этого запроса? – Noman

+0

Да, операторы работают при выборе индивидуально – user5174952

+0

попробуйте изменить '' UNION' в UNION ALL' – Noman

ответ

1

Он не похож колонн, называемых Time и Travel будет иметь тот же тип данных ... Когда вы UNION две выберите заявления, вы фактически положив два значения в одном столбце. SQL не знает, какой тип должен быть для столбца. Вероятно, он видит значения Time, делает столбец столбец DATETIME, затем вы начинаете пытаться втиснуть TravelVARCHAR строки в него.

Попробуйте литья и как такого же типа, как это:

SELECT 
    DATE_FORMAT(Time, '%Y-%m-%d %h:%i:%s') Time 
FROM myTable 

UNION 

SELECT 
    Travel 
FROM myTable; 
0

Если они разные типы Я предполагаю, что Вы хотите, это:

SELECT Time as TimeValue, null as TravelValue FROM mytable 
UNION ALL 
SELECT null as TimeValue, Travel as TravelValue FROM mytable; 

или это

SELECT Time, Travel FROM mytable; 
+0

Всякий раз, когда я использую UNION, я получаю: (Ошибка в запросе на обработку, код ошибки: 403, текст ошибки: запрещен), но если я удалю ключевое слово «UNION», я получаю обычный запрос на ошибку SQL (и да, запрос должен дать ошибку потому что у меня есть два оператора «select» без «union»). Я пробовал все предоставленные ответы, и я могу заключить, что MY MySQL вообще не хочет UNION, он даже не возвращает нормальную ошибку SQL, удаляет ее, затем я получаю нормальная ошибка SQL, все остальное работает нормально, пока я не добавлю UNION к любому выражению. – user5174952

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