请求SQL 2左外连接

时间:2018-04-20 18:47:46

标签: javascript sql node.js sequelize.js

我尝试使用双LETF OUTER JOIN创建一个请求,并且sequelize没有成功 我有2个表:用户

user

并且:朋友

friends

我的用户ID和idfriend与我的表用户相关

如果我有我的桌面用户 Id = X,userId = 23,idFriend = 34,...

我有一个查询谁为我提供了例如23(userID或Idfriend)的所有行 如何在同一请求中获取userId(用户名,电子邮件...)和所有数据idFriend(用户名,电子邮件...)的所有数据

THX

2 个答案:

答案 0 :(得分:0)

你应该两次加入用户,例如:

  select a.userId, a.Idfriend, b.username as  username, c.username as friendname 
  from  friends a
  left join user b on b.id = a.userId 
  left join user c on c.id = a.idfriend 

答案 1 :(得分:0)

如果我理解你的话,你试图通过一个查询获取userId和friendId的数据?我认为这一定对您有用,但您需要对其进行测试

第一种方式:

SELECT user.*, friend.* FROM users
LEFT JOIN users as user ON user.id=23
LEFT JOIN users as friend ON friend.id=34
LIMIT 1

使用UNION的第二种方式:

(SELECT user.*, friend.* FROM users as user
LEFT JOIN users as friend ON friend.id=23
WHERE user.id=34 OR user.id IS NULL)
UNION
(SELECT user.*, friend.* FROM users as user
RIGHT JOIN users as friend ON friend.id=34
WHERE user.id=23 OR user.id IS NULL)

另一种方式(如果WHERE子句为null,这种方式有返回空的风险):

SELECT user.*, friend.* FROM users as user
JOIN users as friend ON friend.id=34
WHERE user.id=23

我希望这会对你有所帮助

相关问题