gpt4 book ai didi

mysql - 尝试使用连接和嵌套选择通过 MySQL 编译用户信息列表时出错

转载 作者:行者123 更新时间:2023-11-30 01:37:56 26 4
gpt4 key购买 nike

我想知道为什么这个 MySQL 查询不起作用。

MySQL 正在报告“您的 SQL 语法有错误;请检查与您的 MySQL 服务器版本相对应的手册,以了解在 ''subscriptions' AS sub INNER JOIN 附近使用的正确语法(SELECT UserID 作为来自 subscriptions ' 第 1 行的 uid”

目标:我试图获取指定用户房间中所有用户的独特用户信息列表。

表结构:
“订阅”表结构 - 用户所在的所有房间的表
- SubscriptionID(自动递增)
- 房间ID
- 用户ID

“users”表结构 - 包含用户帐户详细信息的表
- id(自动递增)
- 昵称
- 状态
- 关于
- 等等..

到目前为止我的查询:

    SELECT * from 'subscriptions' AS sub 
INNER JOIN (SELECT `UserID` as uid from `subscriptions` WHERE RoomID = sub.RoomID)t on t.uid = users.id
WHERE sub.UserID = '1'

我已经完成了一些以上述方式获取用户信息的事情。但是我一直在寻找每个说的“性能”升级。为了执行类似于上面列出的操作,我必须首先获取用户所在的所有房间的不同列表。然后,获取用户所在房间中所有用户的不同列表。然后,将每个房间中的所有成员整理成一个列表,并分别查询找到的每个用户的用户信息表。当然有一种更有效、更合乎逻辑的方法来实现这一点..

最佳答案

您不能在 from 子句中执行相关子查询。您的查询是:

SELECT *
from 'subscriptions sub INNER JOIN
(SELECT `UserID` as uid
from `subscriptions`
WHERE RoomID = sub.RoomID
) t
on t.uid = users.id
WHERE sub.UserID = '1';

我还将 user.id 修复为 sub.id:

SELECT *
from subscriptions sub INNER JOIN
subscriptions t
on t.uid = sub.id and t.roomId = sub.RoomId
WHERE sub.UserID = '1';

但是,我认为你想要:

select *
from subscriptions s
where s.roomId in (select roomId from subscriptions s2 where s2.UserId = '2')

关于mysql - 尝试使用连接和嵌套选择通过 MySQL 编译用户信息列表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16599336/

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