此查询生成错误,因为 table2 不存在:
Select * FROM table WHERE table2.id IS NOT NULL
在对 id 进行检查之前检查 table2 是否有类似的东西?
Select * FROM table WHERE (EXIST(table2) AND table2.id IS NOT NULL) or not EXIST(table2)
您需要查询此系统表:
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'yourdatabasename'
AND table_name = 'table2';
如果返回一行,则您的表存在。
我不相信标准 SQL 中有任何命令或函数可以做到这一点。您可以在发出 SQL 查询之前查询数据字典以检查表是否存在,如下所示:
SELECT table_name FROM INFORMATION_SCHEMA.tables WHERE table_name = 'xxx';
我不认为它可以在单个 SQL 语句中完成。