mysql - mysql 连接中的条件 'on clause'

标签 mysql

我尝试在 mysql 连接中建立条件“on 子句”。

如果 field1 不为空,则应在 'on claus' 中使用, 但如果为空,则应使用 field2。

SELECT * FROM table1
JOIN table2

IF (field1!='') THEN (
    ON  table1.field1 = table2.field1
    AND table1.field3 = table2.field3
    )
ELSE (
    ON  table1.field2 = table2.field2
    AND table1.field3 = table2.field3
    )
END IF

知道这是否可能以及如何完成吗?

编辑: 我忘了解释这两个表都包含空字段,我试图阻止 mysql 使用这些字段进行连接,因为这会产生(非常)很多连接,所以我的想法应该更像这样:

SELECT * FROM table1
JOIN table2

IF (table1.field1!='' AND table2.field1!='') THEN (
    ON  table1.field1 = table2.field1
    AND table1.field3 = table2.field3
    )
ELSE (
    ON  table1.field2 = table2.field2
    AND table1.field3 = table2.field3
    )
END IF

最佳答案

试试这个:

SELECT * FROM table1 t1
LEFT JOIN table2 t2
LEFT JOIN table2 t3
on t1.Field1=t2.Field1 and t1.Field3=t2.Field3
on t1.Field2=t3.Field2 and t1.Field3=t3.Field3

然后使用条件从表2或表3中选择字段。

希望对你有帮助。

编辑

要选择正确的字段,请使用:

SELECT t1.*, IF(t2.field1 is null, t3.field1, t2.Field1) as Field1

关于mysql - mysql 连接中的条件 'on clause',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26193627/

相关文章:

mysql - 在 MySQL Point 字段中反转 X 和 Y 坐标

php - 尝试将用户输入的值与数据库中存储的值进行比较;总是返回错误?

mysql - 创建 SQL 表并将数据输入该表时,我收到错误消息

php - PDO - SQL COUNT 在 PHP 函数中不起作用

php - 如何从 MySQL 数据库创建分页表?

mysql - 如何在选项卡中传递方法(Ionic 2)

php - 使用php插入多个数据并更新数据库?

mysql - mysql如何将一张表的数据导入到另一张表

Python如何将数据从dataframe插入到MySQL

php - 不重复地循环和排序结果