[英]SQL - Join two tables
我有兩張桌子
用戶: (ID,名稱)
關系: (user_id,relationship_id)
User_id和Relation_id都是來自表users
ID。
我想要的是恢復與特定用戶成為朋友的所有用戶。
這是我的sql命令:不起作用:
SELECT *
FROM users
NATURAL JOIN relations
WHERE user_id IN (SELECT id FROM users WHERE name='John doe');
你可以幫幫我嗎?
SELECT users.*
FROM relations
INNER JOIN users
ON relations.relation_id = users.id
WHERE relations.user_id = 12345;
您還可以通過子查詢獲取ID,就像您在示例中所做的那樣:
WHERE relations.user_id IN (SELECT id FROM users WHERE name='John doe');
要獲得一個人擁有的所有關系,以下查詢將起作用。
SELECT * FROM users from us聯接關系on us.id = re.relation_id WHERE re.user_id =(SELECT id FROM users WHERE name ='John doe')
嘗試這個
SELECT * FROM users as a
JOIN relations as b on a.id = b.user_id
WHERE b.user_id IN (SELECT id FROM users WHERE name='John doe')
SELECT user_id
FROM relations re
JOIN users us
ON us.id = re.user_id
WHERE relation_id = (
SELECT id
FROM users
WHERE name = 'John Doe'
)
注意:您不能在這里使用NATURAL JOIN
,因為在兩個表中沒有名稱和類型相同的列。
這不是僅通過您要查找的userId查詢關系表的問題嗎?
select *
from relations
where user_id = @IdYouArelookingFor or relation_id = @IdYouArelookingFor
SELECT friend.*
FROM users AS friend
JOIN relations AS r
ON r.relation_id = friend.id
JOIN users AS u
ON u.id = r.user_id
WHERE u.name = 'John doe' ;
朋友是具有相同Relation_id的人嗎?
SELECT a.name FROM users a JOIN relations b on a.id = b.user_id
WHERE b.relation_id in
(select relation_id from relations where id = 'userid of user you are looking for')
AND a.id != 'userid of user you are looking for'
如果您的邏輯不同,請告訴它如何工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.