mysql-mysql连接中的条件“on子句”
我尝试在mysql连接中建立一个条件“on子句” 如果字段1不为空,则应在“on claus”中使用, 但如果为空,则应使用字段2mysql-mysql连接中的条件“on子句”,mysql,Mysql,我尝试在mysql连接中建立一个条件“on子句” 如果字段1不为空,则应在“on claus”中使用, 但如果为空,则应使用字段2 SELECT * FROM table1 JOIN table2 IF (field1!='') THEN ( ON table1.field1 = table2.field1 AND table1.field3 = table2.field3 ) ELSE ( ON table1.field2 = table2.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
JOIN table2 ON
(
(table1.field1 = '' AND table1.field2 = table2.field2 AND table1.field3 = table2.field3)
OR
(table1.field1 != '' AND table1.field1 = table2.field1 AND table1.field3 = table2.field3)
)
请尝试以下方法:
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
请尝试以下方法:
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
请尝试以下方法:
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
请尝试以下方法:
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
你应该考虑把你的内部连接转换成左连接,如在其他的答案中,如
SELECT * FROM table1 t1
LEFT JOIN table2 t2
ON t1.field1 = t2.field1 AND t1.field3 = t2.field3
LEFT JOIN table2 t22
ON t1.field2 = t22.field2 AND t1.field3 = t22.field3
你也可以试试下面的方法
SELECT t1.*
FROM table1 t1
JOIN table2 t2
ON t1.field1 = t2.field1 AND t1.field3 = t2.field3
OR t1.field2 = t2.field2 AND t1.field3 = t2.field3
你应该考虑把你的内部连接转换成左连接,如在其他的答案中,如
SELECT * FROM table1 t1
LEFT JOIN table2 t2
ON t1.field1 = t2.field1 AND t1.field3 = t2.field3
LEFT JOIN table2 t22
ON t1.field2 = t22.field2 AND t1.field3 = t22.field3
你也可以试试下面的方法
SELECT t1.*
FROM table1 t1
JOIN table2 t2
ON t1.field1 = t2.field1 AND t1.field3 = t2.field3
OR t1.field2 = t2.field2 AND t1.field3 = t2.field3
你应该考虑把你的内部连接转换成左连接,如在其他的答案中,如
SELECT * FROM table1 t1
LEFT JOIN table2 t2
ON t1.field1 = t2.field1 AND t1.field3 = t2.field3
LEFT JOIN table2 t22
ON t1.field2 = t22.field2 AND t1.field3 = t22.field3
你也可以试试下面的方法
SELECT t1.*
FROM table1 t1
JOIN table2 t2
ON t1.field1 = t2.field1 AND t1.field3 = t2.field3
OR t1.field2 = t2.field2 AND t1.field3 = t2.field3
你应该考虑把你的内部连接转换成左连接,如在其他的答案中,如
SELECT * FROM table1 t1
LEFT JOIN table2 t2
ON t1.field1 = t2.field1 AND t1.field3 = t2.field3
LEFT JOIN table2 t22
ON t1.field2 = t22.field2 AND t1.field3 = t22.field3
你也可以试试下面的方法
SELECT t1.*
FROM table1 t1
JOIN table2 t2
ON t1.field1 = t2.field1 AND t1.field3 = t2.field3
OR t1.field2 = t2.field2 AND t1.field3 = t2.field3
我想你可以这样做:
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
JOIN table2 ON
(
(table1.field1 = '' AND table1.field2 = table2.field2 AND table1.field3 = table2.field3)
OR
(table1.field1 != '' AND table1.field1 = table2.field1 AND table1.field3 = table2.field3)
)
注意:我不知道这种方法的效率有多高我想你可以这样做:
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
JOIN table2 ON
(
(table1.field1 = '' AND table1.field2 = table2.field2 AND table1.field3 = table2.field3)
OR
(table1.field1 != '' AND table1.field1 = table2.field1 AND table1.field3 = table2.field3)
)
注意:我不知道这种方法的效率有多高我想你可以这样做:
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
JOIN table2 ON
(
(table1.field1 = '' AND table1.field2 = table2.field2 AND table1.field3 = table2.field3)
OR
(table1.field1 != '' AND table1.field1 = table2.field1 AND table1.field3 = table2.field3)
)
注意:我不知道这种方法的效率有多高我想你可以这样做:
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
JOIN table2 ON
(
(table1.field1 = '' AND table1.field2 = table2.field2 AND table1.field3 = table2.field3)
OR
(table1.field1 != '' AND table1.field1 = table2.field1 AND table1.field3 = table2.field3)
)
注意:我不知道这种方法的效率有多高条件应该放在where子句中,对吗?不,在select中。我编辑我的回答目前我在“on子句”Try t1.Field1中得到未知列“t2.Field1”。可能与大写字母有关。条件应放在where子句中,对吗?否。在select中。我编辑我的回答目前我在“on子句”Try t1.Field1中得到未知列“t2.Field1”。可能与大写字母有关。条件应放在where子句中,对吗?否。在select中。我编辑我的回答目前我在“on子句”Try t1.Field1中得到未知列“t2.Field1”。可能与大写字母有关。条件应放在where子句中,对吗?否。在select中。我编辑我的回答目前我在“on子句”Try t1.Field1中得到未知列“t2.Field1”。可能与大写字母有关。