我有一个叫用户
| id|姓名|用户名|
| - -----|- -----|- -----|
| 1|约翰|用户1|
| 2|玛丽|用户2|
| 3|水桶|用户3|
第二表关系
| id|追随者|followId|
| - -----|- -----|- -----|
| 1| 2| 1|
我想使用sql查询来获取user 3而不是user 1
export const getUsers = (req, res) => {
const q ="SELECT r.*, u.id AS userId, name, profilePic FROM relationships AS r RIGHT JOIN users AS u ON r.followerUserId = u.id";
db.query(q, (err, data) => {
if (err) return res.status(500).json(err);
return res.json(data);
});
};
但我会让所有用户
2条答案
按热度按时间72qzrwbm1#
我的建议是:永远不要使用右外连接。如果需要外部联接,请使用左外部联接。
您有:
其等于:
所以你说:显示所有用户,不管他们是否有关系条目。如果他们跟随其他人,展示所有这些关系。
这根本不是你所描述的任务。你只想要那些不关注用户#1的用户,或者我理解这一点。而且你似乎也不希望用户#1自己。
(It有点奇怪,在你的查询中没有对用户#1的引用。你认为DBMS会猜到这应该是关于用户#1的吗?)
vawmfj5a2#
由于您没有引用用户,而您特别需要user3,或者扩展为“people”,而不是关注user1,因此您可以创建一个关于它的查询。
我们可以使用
NOT EXISTS
来收集满足以下两个条件之一的用户:一旦查询是tested,您可以将其移动到代码中,这将变成如下所示:
尽管我注意到您还选择了在所示示例表中不可用的其他字段,但这应该为您提供了一个可靠的基线来进行扩展。