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"值
如果所有表都与您的朋友表有链接,则您当前的查询将仅列出结果.我相信你更喜欢这样的东西
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语句的结果合并到一个结果集中.