两个不同的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中相同数量的列。
我怎样才能实现上述目标。
提前感谢。
答案 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}
请记住,每个选择中的数据类型需要匹配相同的列。