我喜欢对可能包含某些字段但可能不包含的表使用SELECT。否则,该值可以像JOIN LEFT对不存在的行所做的那样以NULL形式返回。
例如。类似这样的伪SQL:
SELECT id, email IF EXISTS, name, address FROM users;
应该在没有"email"字段的表"users"上无错误地运行,但返回email=NULL。
您想要的东西可以而不是在纯SQL中完成。
本质上,您希望SQL能够有条件地选择一个可能不存在的列。无法解析这样的SQL-选择的所有列都必须存在,否则查询将无效。
然而,您可以通过查询目录表来检查连接到的数据库的模式,并在此基础上动态构建SQL,从而实现这一点。
此查询可能有助于您的应用程序代码构建查询:
select COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'users'
and TABLE_SCHEMA = 'YOUR-DB-NAME';