使用UNION组合两个选择语句

时间:2015-08-07 17:41:29

标签: mysql sql

我正在学习一些SQL语句,我看不出为什么我的代码无法从我的数据库中执行:

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

以上陈述是被禁止的。

2 个答案:

答案 0 :(得分:1)

它看起来不像名为Time的列和Travel具有相同的数据类型...当您UNION两个select语句时,您实际上将两个值放在同一栏。 SQL不知道列的类型。可能,它会看到Time值,使列成为DATETIME列,然后您开始尝试将Travel VARCHAR个字符串填入其中。

尝试将两者都转换为相同的类型,如下所示:

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

UNION

SELECT
  Travel
FROM myTable;

答案 1 :(得分: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;