gpt4 book ai didi

mysql - 将 IN 运算符与子查询结合使用

转载 作者:行者123 更新时间:2023-11-29 10:23:41 27 4
gpt4 key购买 nike

有以下方案

CREATE TABLE request (
`id` int,
`classroom` varchar(255),
`school` varchar(255),
`date_of_application` datetime,
`status` varchar(100),
`user_id` bigint(20) NOT NULL
);

CREATE TABLE user (
`id` int,
`full_name` varchar(255)
);

CREATE TABLE user_schools (
`user_id` int,
`schools_string` varchar(255)
);

我需要获取请求列表,其中状态字段等于“待处理”并且学校字段位于与用户关联的学校列表中的位置

现在我正在尝试以下查询

SELECT
r.id,
u.full_name,
r.date_of_application,
r.classroom
FROM
request r
inner join
user u on u.id = r.user_id
WHERE
r.school IN (
SELECT
us.schools_string
FROM
user_schools us
WHERE
us.user_id = u.id
)
AND r.status = 'pending';

我目前获得了请求的总列表。我知道失败的是子查询。

附上sqlfiddle促进您的协作

我期望的结果是三个应用程序,其中申请人是:用户用户、用户用户和另一个助理用户谢谢你的任何想法。如果有更好的解决方案,谢谢。

问候

最佳答案

该代码正在执行您所要求的操作。如果您想要列表中的用户/请求,那么您可以使用select unique,如下所示:

SELECT DISTINCT u.full_name, r.date_of_application
FROM request r inner join
user u
on u.id = r.user_id
WHERE r.school IN (SELECT us.schools_string
FROM user_schools us
WHERE us.user_id = u.id
) AND
r.status = 'pending';

但是如果您想要教室和请求 ID,那么您将获得原始结果集(或某些变体)。

关于mysql - 将 IN 运算符与子查询结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48734028/

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