Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果表不';你没有列名吗?_Sql_Sql Server - Fatal编程技术网

Sql 如果表不';你没有列名吗?

Sql 如果表不';你没有列名吗?,sql,sql-server,Sql,Sql Server,我有很多桌子。例如:tableName1,tableName2…,tableNameN 有些表的列名分别为'ID'、'D1'、'D2' 某些表只有名为“ID”和“D1”的列名 如果运行以下sql语句: SELECT D1,D2 FROM tableName1 SELECT D1,D2 FROM tableName2 SELECT D1,D2 FROM tableName3 ... SELECT D1,D2 FROM tableNameN 由于某些表没有“D2”列,因此它将在某些表sql中崩溃

我有很多桌子。例如:tableName1,tableName2…,tableNameN

有些表的列名分别为'ID'、'D1'、'D2'

某些表只有名为“ID”和“D1”的列名

如果运行以下sql语句:

SELECT D1,D2 FROM tableName1
SELECT D1,D2 FROM tableName2
SELECT D1,D2 FROM tableName3
...
SELECT D1,D2 FROM tableNameN
由于某些表没有“D2”列,因此它将在某些表sql中崩溃

它将显示“无效列名“D2”

如果表没有列名,如何让SQL不会崩溃

我希望如果表中没有'D2',sql结果的列值是我指定的默认值

高级问题:

如果表没有我想要的多个列

有些表的列名分别为'ID'、'D1'、'D2'、'D3'

某些表只有名为“ID”和“D1”的列名

我在下面试了一下,效果不错

select t.* 
from (select NULL as D2,NULL as D3) x cross apply
     (select D2,D3
      from t
     ) t

有一个诀窍可以让这一切顺利进行:

select t.* 
from (select NULL as d2) x cross apply
     (select d1, d2
      from t
     ) t
如果
d2
位于
t
中,则它将解析为
t.d2
。否则,它将解析为
x.d2


这是唯一一种不适合使用限定列名的情况。

有一个技巧可以实现这一点:

select t.* 
from (select NULL as d2) x cross apply
     (select d1, d2
      from t
     ) t
如果
d2
位于
t
中,则它将解析为
t.d2
。否则,它将解析为
x.d2


这是唯一不适合使用限定列名的情况。

@JohnWoo。这是可以做到的。@JohnWoo。这是可以做到的。