我只需要选择一列,只要它存在于表中,否则它可以设置为空。SQL - 有条件地选择列(如果存在的话)
下面样品台,可以说该marks
山坳是没有必要存在,所以需要的,如果它存在
表1进行检查:
name marks
joe 10
john 11
mary 13
查询:
select
name,
marks if it exists else null as marks1 -- pseudo code
from
table1
应该选择哪一行marks
?
你会如何*不知道'marks'是table1上的一列吗? –
您应该**重新考虑您管理数据库架构和迁移的方式。不知道列是否存在的事实可能表明您正在使用错误的过程在数据库中创建和更新表。另外:拥有'marks1'表也可能是非标准化设计的标志。你可以使用动态SQL来实现类似的功能,但它可以更好地解决你管理表的方式 –
@a_horse_with_no_name同意更广泛的观点 - 但这不是模式和移植的问题 - 现实世界的数据很混乱:)并且上下文不是应用程序,而是来自我无法控制的来源的一些真实世界数据 - 它可能或可能不是所有期望的列 - 问题真的在此上下文中,如果可能的话为此进行一些检查。 – user3206440