我承认,我在JOIN条件方面有点弱。我想从2个表中获得一个结果集,其中有4个匹配的列。
我已经尝试了下面的代码,但我不确定它是否正确,因为我有3-4条记录(结果是正确的)。但是将来可能会有N条记录,因此我需要一个更安全的查询。
这两个表是:TABLEA和TABLEB
为多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