首页 > 解决方案 > 联合不存在的表的问题

问题描述

我想在一个 SQL 语句中从多个具有相同列名的表中获取数据,例如:

SELECT name, age FROM table_a UNION SELECT name, age FROM table_b UNION...

但是 table_x 可能不存在,我无法避免向我发送请求的人,如果其中一个表没有在查询中退出,它将失败,是否有任何语法可以避免这种情况?

我知道一种方法可以show tables用来获取数据库中的所有表并首先将它们与请求参数进行比较,但我希望我可以从 MySQL 语法中做到这一点。

标签: mysql

解决方案


最简洁的答案是不。如果您在它前面使用另一种语言,例如 PHP 或任何其他语言,您可以按照您的建议查询表,但 SQL 期望查询在语法上是准确的,如果不是,它将出错。如果必须的话,有一种(IMO 不好)方法可以做到这一点。您可以使用存储过程,它允许您像使用 PHP 或其他语言一样动态构建查询,但这就是 MySQL(或我知道的任何数据库)所拥有的一切。


推荐阅读