Sql 如果表不';你没有列名吗?
我有很多桌子。例如:tableName1,tableName2…,tableNameN 有些表的列名分别为'ID'、'D1'、'D2' 某些表只有名为“ID”和“D1”的列名 如果运行以下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中崩溃
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。这是可以做到的。