gpt4 book ai didi

mysql - 改变查询以返回关注者列表以包含 followedBack 字段

转载 作者:可可西里 更新时间:2023-11-01 09:03:58 25 4
gpt4 key购买 nike

我有一个名为 favorites 的表,其结构如下:

CREATE TABLE IF NOT EXISTS `favourites` (
`ID` int(11) NOT NULL,
`followerID` int(11) NOT NULL,
`followedID` int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=615 DEFAULT CHARSET=latin1;

我有一个网络服务来检索关注我的用户列表。

SELECT ID, followerID, FName, SName , pic
FROM Favourites
INNER JOIN users
ON users.UserID = Favourites.followerID
WHERE followedID = ?
ORDER BY ID Desc
LIMIT ?, 10

传递到 where 条件的参数是相关用户检索他们的关注者列表的地方。

我需要在此回复中添加一个额外的字段,以表明我是否也在关注他们。

我最初尝试添加它的方式如下,但出现语法错误。

SELECT ID, followerID, FName, SName, pic, count(SELECT followerid from favourites where followedid = 36) as amFollowing 
FROM Favourites
INNER JOIN users
ON users.UserID = Favourites.followerID
WHERE followedID = 36
ORDER BY ID Desc
LIMIT 0, 10

如果有人对如何解决这个问题有任何建议,我发现很难理解?我应该添加一个 isFollowedBack 列并即时更新它,还是有一种简单的方法可以在不更改表结构的情况下实现我想要的?也许我应该使用 CASE 即时计算它?

根据 Linoff 的回答更新:

    SELECT ID, followerID, FName, SName, pic, 
(SELECT COUNT(*) FROM favourites f2 WHERE f2.followedid = f.followerId and f2.followerid = 36 ) as amFollowing
FROM Favourites f
INNER JOIN users u ON u.UserID = f.followerID
WHERE followedID = 36
ORDER BY ID
Desc limit 0, 10

(36 是发出请求的人的用户 ID)

运行解释返回:

id             :      1
select_type : PRIMARY
table : f
type : index
possible_keys : NULL
key : PRIMARY
key_len : 4
ref : NULL
rows : 10
Extra : Using where


id : 1
select_type : PRIMARY
table : u
type : eq_ref
possible_keys : PRIMARY
key : PRIMARY
key_len : 4
ref : DBName.f.followerID
rows : 1
Extra : NULL

id : 2
select_type : DEPENDENT SUBQUERY
table : f2
type : ALL
possible_keys : NULL
key : NULL
rows : 716
Extra : Using where

最佳答案

您可以将 count() 移动到子查询中:

SELECT ID, followerID, FName, SName, pic,
(SELECT COUNT(*)
FROM favourites f2
WHERE f2.followedid = f.followedId
) as amFollowing
FROM Favourites f INNER JOIN
users u
ON u.UserID = f.followerID
WHERE followedID = 36
ORDER BY ID Desc
LIMIT 0, 10;

您还应该养成在查询中使用表别名和限定列名的习惯。

关于mysql - 改变查询以返回关注者列表以包含 followedBack 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34881162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com