首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL where-IN子查询仅返回一行

MySQL where-IN子查询仅返回一行
EN

Stack Overflow用户
提问于 2012-08-07 16:19:20
回答 2查看 732关注 0票数 1

我有两个表课程&学生

比如说,学生有字段:idfirst_name with data

代码语言:javascript
复制
id : first_name

1 : Andrew
2 : Brian
3 : Charles
4 : David
5 : Eric
6 : Fred
7 : George

比如说,课程有两个字段: id和学生

使用数据:

id。。。。。。。。1.。。。。。2

学生们。。。1,2,5.。.3,4,6,7

假设我想找到课程1中的学生的名字

SELECT students FROM courses c WHERE c.id = 1;

预期收益率为1,2,5

也是

SELECT @students := students FROM courses c WHERE c.id =1;

预期收益率为1,2,5

SELECT s.first_name FROM students s WHERE s.id IN (1,2,5);

收益率安德鲁,布莱恩·埃里克如预期

SET @students := students FROM courses c WHERE c.id =1; SELECT @students;`

产生1,2,5

我期待着

SET @students := students FROM courses c WHERE c.id =1; SELECT s.first_name FROM students s WHERE s.id IN (@students);

为了让安德鲁,布莱恩·埃里克

但它只返回名字: Andrew

我完全知道我可以/应该有一个单独的course_student查找表,但我很想知道为什么我得不到预期的结果

我哪里错了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-07 16:32:05

您的问题在于如何使用@students;当在' in‘子句中使用时,它默认为string*。

因此,您的查询实际上如下所示:

代码语言:javascript
复制
SELECT s.first_name FROM students s WHERE s.id IN ("1, 2, 5");

不幸的是,这最终会是:

代码语言:javascript
复制
SELECT s.first_name FROM students s WHERE s.id IN (1);

以下任一项:

代码语言:javascript
复制
SELECT s.first_name 
FROM students s 
WHERE s.id IN (
               SELECT students FROM courses c WHERE c.id =1
               )

(一个经典的相关子查询)

或者:

代码语言:javascript
复制
SELECT s.first_name FROM students s WHERE FIND_IN_SET(`id`, @students)

或者,最好使用,如@JohnTotetWoo所描述的那样使用内部连接。

*它似乎缺省为一个字符串,然后对int的结果强制转换去掉了第一个逗号之后的每个数字。但是,这也可能是IN子句的一个怪癖,它忽略了变量中第一个数字之后的所有其他内容。

票数 0
EN

Stack Overflow用户

发布于 2012-08-07 16:23:14

您需要连接两个表:StudentsCourse,最好使用INNER JOIN

试试这个:

代码语言:javascript
复制
SELECT  b.First_name
FROM    Courses a 
            INNER JOIN Students b
                on a.studentID = b.ID
WHERE   a.ID = 1

它应该会返回

代码语言:javascript
复制
First_Name
==============
Andrew
Brian
Eric
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11841850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档