使用PHP/MySQL连接两个具有多列的表
我承认,我在加入条件方面有点弱。我想从两个表中获得一个结果集,其中有4个匹配列 我尝试了下面的代码,但我不确定它是否正确,因为目前我有3-4条记录(结果是正确的)。但是将来可能会有N个记录,因此我需要一个更安全的查询 这两个表是:表A和表B 表a使用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
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:谢谢