我有两个表课程&学生MySQL的地方,在子查询只返回一行
说,学生有字段:id
,first_name
数据
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预期
而且
按预期得到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);
产生安德鲁,布莱恩·埃里克
但它只返回的第一个名字:安德鲁
我深知,我可能/应该有一个单独course_student查表,但我急于了解为什么我没有得到我期待的结果
我在哪里出错了?
它的工作原理! SELECT @students:= students FROM courses c WHERE c.id = 1; SELECT s.first_name FROM students s WHERE FIND_IN_SET('id',@students)\ n谢谢你的答案。我认为这肯定是一个类型问题,我试图把学生作为Char,但似乎没有工作 – apwatts 2012-08-07 13:57:02
我现在成功地使用..... SELECT s.first_name FROM students s WHERE FIND_IN_SET('id',(SELECT students FROM courses c WHERE c.id = 1)) – apwatts 2012-08-07 14:01:49