Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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
使用PHP/MySQL连接两个具有多列的表_Php_Mysql_Performance_Join - Fatal编程技术网

使用PHP/MySQL连接两个具有多列的表

使用PHP/MySQL连接两个具有多列的表,php,mysql,performance,join,Php,Mysql,Performance,Join,我承认,我在加入条件方面有点弱。我想从两个表中获得一个结果集,其中有4个匹配列 我尝试了下面的代码,但我不确定它是否正确,因为目前我有3-4条记录(结果是正确的)。但是将来可能会有N个记录,因此我需要一个更安全的查询 这两个表是:表A和表B 表a id|pid|nid|sid|name| -------------------- 1 | 2 | 2 | 3 | test 2 | 2 | 2 | 3 | t2 3 | 2 | 2 | 4 | t3 表B id|pid|nid|sid|marke

我承认,我在加入条件方面有点弱。我想从两个表中获得一个结果集,其中有4个匹配列

我尝试了下面的代码,但我不确定它是否正确,因为目前我有3-4条记录(结果是正确的)。但是将来可能会有N个记录,因此我需要一个更安全的查询

这两个表是:表A和表B

表a

id|pid|nid|sid|name|
--------------------
1 | 2 | 2 | 3 | test
2 | 2 | 2 | 3 | t2 
3 | 2 | 2 | 4 | t3
表B

id|pid|nid|sid|marked |
-----------------------------
1 | 2 | 2 | 3 |  y
2 | 2 | 2 | 3 |  y
3 | 2 | 2 | 4 |  n
下面是我尝试过的查询:

SELECT 
    b.marked 
FROM 
    TABLEA AS a
LEFT JOIN 
    TABLEC AS c ON a.id = c.id
LEFT JOIN  
    TABLEB AS b ON ( 
        a.id = b.id
        AND  a.pid = b.pid
        AND  a.nid = b.nid
        AND  a.sid = b.sid  
    )
我得到了预期的结果,但我不确定上面的查询是否适合大量记录。

您能这样尝试吗

SELECT b.marked from TABLEA as a
LEFT JOIN TABLEC as c on a.id = c.id
LEFT JOIN  TABLEB as b1 ON a.id = b1.id
LEFT JOIN  TABLEB as b2 ON a.pid = b2.pid
LEFT JOIN  TABLEB as b3 ON a.nid = b3.nid
LEFT JOIN  TABLEB as b4 ON a.sid = b4.sid

我曾试过那样做,但得到了同样的结果。。但是你不认为如果有N个记录,那么它的步长和性能会降低吗?快速、更好的查询,那么哪一个在所有方面都是正确和安全的@strawbeery:谢谢