两个不同的select子句中的不等列使用了union子句

时间:2013-06-12 06:40:18

标签: mysql union

两个不同的select子句中的不等列使用了union子句。

在mysql中,我们应该在2个使用UNION子句的查询中的select子句中定义相同数量的列。

所以,为了实现上述目标,我这样做:

SELECT col1, col2, col3, col4
FROM table1
{whereclause}
UNION
SELECT c1, c2, NULL, NULL
FROM table2
{whereclause}

但在我的应用程序中的某些地方没有。第一个选择子句中的列对我来说是未知的,因此无法硬编码'NULL'

有一点是常量,即第二个SELECT clause c1, c2将保持相同,但我想在select子句中附加'NULL'以匹配select子句1中相同数量的列。

我怎样才能实现上述目标。

提前感谢。

2 个答案:

答案 0 :(得分:0)

希望我了解你。

如果你想从两个表中提取数据,他们不需要有相同数量的列,但他们需要有一些共同点。

通用sytnax将是:

SELECT table1.col1, table2.col1 FROM table1 LEFT JOIN table2 ON table1.col3=table2.col3 WHERE {where conditions}

这里重要的是有一个数据的链接位 - 通常是两个表共有的用户编号,在两个表中都意味着相同的东西。

答案 1 :(得分:0)

尝试将ALIAS分配给NULL列的名称

SELECT col1, col2, col3, col4
FROM table1
{whereclause}
UNION
SELECT c1, c2, NULL as c3, NULL as c4
FROM table2
{whereclause}

请记住,每个选择中的数据类型需要匹配相同的列。