根据第二个表(sql)的另一个值在第一个表中选择一个值

时间:2013-09-17 16:47:39

标签: mysql sql

让我解释一下我的情况,它比标题更清晰!我有两张桌子。让我们看一下这里,我会解释一下我想做什么。

第一张表(课程表)

+------------------+----------------+
| LessonCode       | SubjectCode    |
+------------------+----------------+
| 1                | 10             |
| 2                | 11             |
| 3                | 12             |
+------------------+----------------+

第二张表(主题表)

+------------------+----------------+------------+
| subjectCode      | SubjectName    | teacherCode|
+------------------+----------------+------------+
| 10               | Maths          | 15         |
| 11               | English        | 20         |
| 12               | Greek          | 30         |
+------------------+----------------+------------+

我会从表lesson中选择teacherCode=20的主题。可以在一个查询中使用吗?

7 个答案:

答案 0 :(得分:1)

试试这个:

select * 
from lesson l
join subject s on s.subjectCode=l.SubjectCode
where s.teacherCode=20

答案 1 :(得分:1)

要获得教师X的所有课程,您必须加入两个表:

select LessonCode from lesson l
inner join subject s on s.subjectCode = l.SubjectCode
where s.teacherCode = x

这基本上执行以下操作:它创建两个表的叉积,然后删除所有不符合on子句的行。然后它删除所有不符合where子句的行。这只留下给定教师X的课程。

答案 2 :(得分:1)

您需要使用简单的连接。

select l.*
from lesson l
join subject s on l.SubjectCode=s.SubjectCode
where s.teacherCode=20

答案 3 :(得分:1)

SELECT
    *
FROM 
    (lesson, subject)
WHERE 
    lesson.SubjectCode = subject.subjectCode AND
    subject.teacherCode = 20

答案 4 :(得分:1)

SELECT SubjectCode     
from  LessonTbl lt
Left Outer join  subjectTbl st
on       lt.subjectCode    = st.subjectCode      
where st.teacherCode=20.

答案 5 :(得分:1)

SELECT A.*
FROM lesson A
JOIN subject B ON A.SubjectCode = B.SubjectCode
WHERE B.teacherCode = '20'

答案 6 :(得分:1)

Select a.*
From Lesson a
Inner Join Subject b on a.SubjectCode = b.SubjectCode
where c.TeacherCode = '20'

这就是全部。只要你知道Subject表中存在每个Lesson的SubjectCode,就像我的例子中那样做一个Inner Join。否则,将其更改为左外连接。