一尘不染

您如何在mysql的同一张表上两次连接?

mysql

我有2张桌子。一个(域)具有域ID和域名(dom_id,dom_url)。

另一个包含实际数据,其中2列需要TO和FROM域名。所以我有2列rev_dom_from和rev_dom_for,它们都存储来自domains表的域名ID。

简单。

现在,我需要在网页上实际显示两个域名。我知道如何通过LEFT JOIN域名显示reviews.rev_dom_for =
domains.dom_url查询来显示一个或另一个,然后回显dom_url,它会回显rev_dom_for列中的域名。

但是,如何使它在dom_rev_from列中回显第二个域名?


阅读 516

收藏
2020-05-17

共1个答案

一尘不染

您将使用另一个联接,类似于以下内容:

SELECT toD.dom_url AS ToURL, 
    fromD.dom_url AS FromUrl, 
    rvw.*

FROM reviews AS rvw

LEFT JOIN domain AS toD 
    ON toD.Dom_ID = rvw.rev_dom_for

LEFT JOIN domain AS fromD 
    ON fromD.Dom_ID = rvw.rev_dom_from

编辑

您要做的就是多次加入表中。查看帖子中的查询:它从Reviews表(别名为rvw)中选择值,该表为您提供2个对Domain表的引用(一个FOR和一个FROM)。

此时,只需将Domain表加入Reviews表即可。FOR一次(别名为toD),FROM另一次(别名fromD)。

然后,在SELECT列表中,您将从DOMAIN表的两个LEFT
JOINS中选择DOM_URL字段,并为每个引用Domains表的联接使用表别名来引用它们,并将它们作为ToURL和FromUrl进行别名。

有关SQL中的别名的更多信息,请阅读此处

2020-05-17