我尝试在 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/