Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql-mysql连接中的条件“on子句”_Mysql - Fatal编程技术网

mysql-mysql连接中的条件“on子句”

mysql-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

我尝试在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
    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”。可能与大写字母有关。