Mysql 查询返回错误的结果,应为一行,但得到全部

Mysql 查询返回错误的结果,应为一行,但得到全部,mysql,sql,Mysql,Sql,我下面的语句将返回表的所有结果,而不是仅返回匹配的n1。我附上了结果的截图。我期待的只是第一排。有人能帮我理解这里发生了什么吗? 您现在的查询检查表proj_d中是否存在值n1。这总是正确的。 所以我猜你想要这样的东西: Create View Proj_Display AS select * from Proj_d Where Student in (Select Student from proj_d WHERE Student = 'n1'); 但您可以不使用子查询立即执行此操作:

我下面的语句将返回表的所有结果,而不是仅返回匹配的n1。我附上了结果的截图。我期待的只是第一排。有人能帮我理解这里发生了什么吗?

您现在的查询检查表proj_d中是否存在值n1。这总是正确的。 所以我猜你想要这样的东西:

Create View Proj_Display AS
select * from Proj_d
Where Student  in (Select Student from proj_d WHERE Student = 'n1');
但您可以不使用子查询立即执行此操作:

Create View Proj_Display AS
select * from Proj_d
Where Student  = 'n1'
但也许你需要提供更多你想要的信息

您现在的查询检查表proj_d中是否存在值n1。这总是正确的。 所以我猜你想要这样的东西:

Create View Proj_Display AS
select * from Proj_d
Where Student  in (Select Student from proj_d WHERE Student = 'n1');
但您可以不使用子查询立即执行此操作:

Create View Proj_Display AS
select * from Proj_d
Where Student  = 'n1'

但您可能需要提供更多您想要的信息。我们没有足够的信息。抱歉,上面是n1,您不想让SELECT中的学生从项目中登录吗?这将只返回第一行,但您的查询不清楚。您的意思是从Proj_d中选择*from Student=n1还是更复杂的?因此,我只希望返回与我手动选择的值匹配的行,即n1/n2等。我们没有足够的信息。抱歉,这是上面的n1,而不是您想让学生从项目中登录的位置?这将只返回第一行,但您的查询不清楚。您的意思是从Proj_d中选择*from Student=n1还是更复杂的东西?因此,我只希望返回与我手动选择的值匹配的行,即n1/n2等。这是一个视图吗?为什么不只是一个问题呢?谢谢你到现在为止的回复。我试图理解EXISTS和IN之间的区别,到目前为止我的错误理解是IN只返回一行,EXISTS将返回true。我创建这个场景是为了完善我的理解,即如果学生登录,那么只能看到自己的行,我将进一步发展,如果教师登录,那么可以看到整个表。所以我想加上-……或者从teacher中选择*,其中teacher='t1'@HLGEM@johan为什么这是一个视图?为什么不只是一个问题呢?谢谢你到现在为止的回复。我试图理解EXISTS和IN之间的区别,到目前为止我的错误理解是IN只返回一行,EXISTS将返回true。我创建这个场景是为了完善我的理解,即如果学生登录,那么只能看到自己的行,我将进一步发展,如果教师登录,那么可以看到整个表。所以我想加上-……或者从teacher中选择*,其中teacher='t1'@HLGEM@Johan