基于第一个表的多个响应对第二个表进行SQL查询

基于第一个表的多个响应对第二个表进行SQL查询,sql,Sql,下面是一个SQL查询,如果第一个查询返回多个值,则该查询将失败- SELECT subject FROM a_batchcourse_subject AS s WHERE (batchcourse = (SELECT batchcourse FROM a_course_batchcourse AS b

下面是一个SQL查询,如果第一个查询返回多个值,则该查询将失败-

SELECT     subject
FROM         a_batchcourse_subject AS s
WHERE     (batchcourse =
                          (SELECT     batchcourse
                          FROM          a_course_batchcourse AS b
                          WHERE      (course = 'Course 1')))

在第一个查询可能返回多个值的情况下,编写此查询的正确方法是什么?

您希望sql中的
而不是
=

SELECT subject
FROM a_batchcourse_subject AS s
WHERE batchcourse IN
(SELECT batchcourse
FROM a_course_batchcourse AS b
WHERE course = 'Course 1')

您希望sql中的
而不是
=

SELECT subject
FROM a_batchcourse_subject AS s
WHERE batchcourse IN
(SELECT batchcourse
FROM a_course_batchcourse AS b
WHERE course = 'Course 1')

JOIN
子句中的
快得多

SELECT  s.subject
FROM    a_batchcourse_subject s 
        INNER JOIN a_course_batchcourse b
        on s.batchcourse = b.batchcourse
WHERE   (b.course = 'Course 1')

JOIN
子句中的
快得多

SELECT  s.subject
FROM    a_batchcourse_subject s 
        INNER JOIN a_course_batchcourse b
        on s.batchcourse = b.batchcourse
WHERE   (b.course = 'Course 1')

这是一个对我有效的精确查询从a_batchcourse_subject中选择s.subject作为s的内部连接a_course_batchcourse作为b ONs、 batchcourse=b.batchcourse,其中(b.course='course 1')@johntotetwoo join和in是两个不同的东西,in比join@Somebodyisintrouble也许您可以阅读这篇文章:。内部联接和in是两种不同的东西,如果b.batchcourse不是唯一的,您的查询将返回比预期更多的结果这是一个对我有效的查询,从a\U batchcourse\U主题中选择s.subjectAS s内部在s.batchcourse=b.batchcourse上以b的形式连接a\u课程\u batchcourse,其中(b.course='course 1')@johntotetwoo join和in是两个不同的东西,in比join@Somebodyisintrouble也许您可以阅读这篇文章:。内部联接和in是两种不同的东西,如果b.batchcourse不是唯一的,则查询返回的结果将比预期的要多。如果batchcourse是表a的batchcourse\U course\batchcourse唯一的,则尝试联接,否则使用表a的INis batchcourse\u course\u batchcourse Uniques如果batchcourse是唯一的,则尝试加入,否则在中使用