学生(学号,姓名)
选课A(学号,课程号)
选课B(学号,课程号)查找在选课A中的学生姓名:
mySql = "select 学生.姓名 from 学生 where 学号 in(select 学号 from 选课A)"问题:
如何用IN方法写  既在选课A,又在选课B中的学生?
                或者在选课A,或者在选课B中的学生?

解决方案 »

  1.   

    select 姓名
    from 学生 a join 选课A b on a.学号=b.学号
                join 选课B c on a.学号=c.学号
      

  2.   

    select 学生.姓名 from 学生,选课A where 学生.学号=选课A.学号  
      既在选课A,又在选课B中的学生
      

  3.   

    mySql = "select 学生.姓名 from 学生 where 学号 in(select 学号 from 选课A Union Select 學號 From 選課B )"
      

  4.   

    问题:
    如何用IN方法写  在选课A,或者在选课B中的学生?
    Re:
    select distinct 姓名 from 学生 
    where 学号 in(select 学号 from 选课A 
                  Union All
                  Select 學號 From 選課B)如何用IN方法写  既在选课A,又在选课B中的学生?
    Re:
    select distinct 姓名 from 学生 
    where 学号 in(
                   select 学号 from 选课A
                  )
    and 学号 in(
                 Select 學號 From 選課B
                )
    不过建议你最好还是用连接的方法,因为用in速度会比较慢,建议用这个:
    1:
    select distinct a.姓名 from 学生 a, 选课A b,選課B c
    where a.学号=b.学号 and a.学号=b.学号
    2:
    select distinct a.姓名 from 学生 a, 选课A b,選課B c
    where a.学号=b.学号 or a.学号=b.学号