MySQL 基于 IF 条件从两个表之一进行 JOIN

标签 mysql sql join sql-view

SELECT Table1.Filter, Table1.Condition, Combined.Data FROM Table1
LEFT JOIN 
(SELECT Key, Data FROM IF(Table1.Filter, Table2, Table3))) AS Combined 
ON Table1.Condition = Combined.Key

我想创建一个 MySQL View ,显示 Table1 的所有列,以及 Table2Table3 中的列(具体取决于字段)在Table1.Filter上。

一个简单的解决方案是对 Table2Table3 进行LEFT JOIN,并在对应的列上使用 NULL不适用。有没有办法避免创建 2 列? 我无法 UNION Table2Table3,因为它们可能包含相同的 Key

最佳答案

以下内容应该满足您的要求:

SELECT t1.Filter, t1.Condition,
       COALESCE(t2.Data, t3.Data) as Data
FROM Table1 t1 LEFT JOIN 
     Table2 t2
     ON t1.Filter AND t2.Key = t1.Condition LEFT JOIN
     Table3 t3
     ON (NOT t1.Filter) AND t3.key = t1.condition;

您不能使用条件条件在 FROM 中选择表。但是,您可以在 ON 条件中添加条件。

关于MySQL 基于 IF 条件从两个表之一进行 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45156459/

相关文章:

php - 显示给定 MySQL 数据库中的所有表

PHP 和 AJAX 问题?

sql - 了解带有 'IIF' 的 Microsoft Office Access SQL 查询

MySql 命令行 : execute two queries at once?

mysql - 在 MySQL 中使用自定义字符串创建别名列

mysql - 在 MySQL 中旋转 - 一次只能在一行上工作?

MySQL IF 条件

mysql - 我可以将此模式用于 where 子句的可选部分吗?

MySql 在同一查询中更新和选择

PHP+Mysql 多表按日期排序(通过左连接)