SQL-默认列

SQL-默认列,sql,Sql,我有下面的SQL语句 SELECT table1.col1, table2.col2 FROM table1, table2 WHERE table1.t_id = table2.t_id UNION SELECT table1.col1 FROM table1 WHERE table1.col4 = null 问题是,我认为这种语法是无效的,因为第二条语句不包含与第一条语句相同的列 我不能在第二个语句中包含table2.col2,因为我不需要它 我是否需要在第2条语句中包含默认的第二列,以便

我有下面的SQL语句

SELECT table1.col1, table2.col2 FROM table1, table2 WHERE table1.t_id = table2.t_id
UNION
SELECT table1.col1 FROM table1 WHERE table1.col4 = null
问题是,我认为这种语法是无效的,因为第二条语句不包含与第一条语句相同的列

我不能在第二个语句中包含table2.col2,因为我不需要它


我是否需要在第2条语句中包含默认的第二列,以便使该查询正常工作?

是的,只需使用常量,如1或“”


也许这就是你要找的?您不必从表中提取值。。。您总是可以凭空创建它们。:)


只需在列列表中为第二条SQL语句中不需要的列使用空(“”)引号。

我通常使用
NULL
(这应该强制为任何类型):


可能最好对伪列使用null,这样它的工作方式更像外部联接(除非您特别需要该列具有特定值)

SELECT table1.col1, table2.col2 
    FROM table1, table2 WHERE table1.t_id = table2.t_id
UNION
SELECT table1.col1, null 
    FROM table1 WHERE table1.col4 = null

执行联合或联合时,所有列数必须匹配。您需要硬编码一个值以放入该列,或者查询sys.columns目录视图,获取要插入的列的默认值,并在其中使用该值。

@Joel-true,但我不知道他想要在该列中输入什么。
SELECT table1.col1, table2.col2 FROM table1, table2 WHERE table1.t_id = table2.t_id
UNION
SELECT table1.col1, 'whatever' FROM table1 WHERE table1.col4 is null
SELECT table1.col1, table2.col2 FROM table1, table2 WHERE table1.t_id = table2.t_id
UNION
SELECT table1.col1, NULL AS col2 FROM table1 WHERE table1.col4 = null
SELECT table1.col1, table2.col2 
    FROM table1, table2 WHERE table1.t_id = table2.t_id
UNION
SELECT table1.col1, null 
    FROM table1 WHERE table1.col4 = null