在SQL查询中加入4个表

use*_*742 4 mysql sql database join

在我的数据库中有4个关系表,并希望加入它们以获得总价值...例如,我有朋友,家人,跟随和熟人,并希望加入这些以获得"全部"值.

表格格式如下:

id follower following
---------------------
1     2      3
2     4      5
Run Code Online (Sandbox Code Playgroud)

家庭

id follower following
---------------------
1     5      6
2     7      8
Run Code Online (Sandbox Code Playgroud)

以下

id follower following
---------------------
1     9      10
2     11     12
Run Code Online (Sandbox Code Playgroud)

熟人

id follower following
---------------------
1     13     14
2     15     16
Run Code Online (Sandbox Code Playgroud)

加入所有4个表是正确的查询...

SELECT following
FROM   friends
       INNER JOIN family ON friends.following=family.following
       INNER JOIN following ON friends.following=following.following
       INNER JOIN acquaintances ON friends.following=acquaintances.following
WHERE  follower='id'
Run Code Online (Sandbox Code Playgroud)

基本上我想加入并检索id = my id的所有四个表中的"follow"值

Lie*_*ers 6

如果所有表都与您的朋友表有链接,则您当前的查询将仅列出结果.我相信你更喜欢这样的东西

SELECT following
FROM   friends
WHERE  follower='id'
UNION ALL 
SELECT following
FROM   family 
WHERE  follower='id'
UNION ALL 
SELECT following
FROM   following
WHERE  follower='id'
UNION ALL 
SELECT following
FROM   acquaintances 
WHERE  follower='id'
Run Code Online (Sandbox Code Playgroud)

或者更好阅读,更容易调整以牺牲一些性能

SELECT following 
FROM   (
        SELECT following, follower FROM friends
        UNION ALL SELECT following, follower FROM family 
        UNION ALL SELECT following, follower FROM following
        UNION ALL SELECT following, follower FROM acquaintances 
       ) AS f
WHERE  follower='id'
Run Code Online (Sandbox Code Playgroud)

联盟

UNION用于将多个SELECT语句的结果合并到一个结果集中.