我喜欢在可能包含某些字段但可能不包含的表上使用 SELECT。如果不是,该值可以作为 NULL 返回,就像 JOIN LEFT 对不存在的行所做的那样。
例如。像这样的伪 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';
关于如果表中不存在,MySQL 选择一个字段为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9062815/