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

Mysql 根据第二个表的另一个值(sql)在第一个表中选择一个值,mysql,sql,Mysql,Sql,让我解释一下我的情况,它确实比标题更清楚!我有两张桌子。让我们看一下这里,然后我会告诉你我想做什么 第一张桌子(课桌) 第二张表(主题表) 我将从表lesson中选择具有teacherCode=20的主题。只需一次查询就可以了?试试以下方法: select * from lesson l join subject s on s.subjectCode=l.SubjectCode where s.teacherCode=20 试试这个: select * from lesson l join

让我解释一下我的情况,它确实比标题更清楚!我有两张桌子。让我们看一下这里,然后我会告诉你我想做什么

第一张桌子(课桌)

第二张表(主题表)

我将从表
lesson
中选择具有
teacherCode=20
的主题。只需一次查询就可以了?

试试以下方法:

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

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

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

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

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

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

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

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

您需要使用一个简单的连接

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

您需要使用一个简单的连接

select l.*
from lesson l
join subject s on l.SubjectCode=s.SubjectCode
where s.teacherCode=20
就这些。只要您知道每个课程的SubjectCode都存在于Subject表中,只需像我的示例中那样进行内部联接。否则,将其更改为左外部联接


就这些。只要您知道每个课程的SubjectCode都存在于Subject表中,只需像我的示例中那样进行内部联接。否则,将其更改为左外部联接。

lesson
的列
SubjectCode
是大写的
S
。我认为mySQL在列名中不区分大小写,但是我修正了这个例子只是为了安全表
lesson
的列
SubjectCode
是大写的
S
。我不认为mySQL在列名上区分大小写,但我修正了这个例子只是为了安全谢谢你的帮助。为什么如果一个do
select*from lesson l..
我得到了一个唯一的统一表,其中包含所有两个表列?是的,你会的。就在你的数据库管理系统上试试吧。我误读了你的评论,错过了
为什么
Select*
将获取所有联接表的所有列,
Select t.*
将获取表
t
的所有列(必须出现在from/join子句中),
Select x
将生成列
x
,如果它只出现在一个联接表中,
select t.x
将检索表
t
x
列。感谢您的帮助。为什么如果一个do
select*from lesson l..
我得到了一个唯一的统一表,其中包含所有两个表列?是的,你会的。就在你的数据库管理系统上试试吧。我误读了你的评论,错过了
为什么
Select*
将获取所有联接表的所有列,
Select t.*
将获取表
t
的所有列(必须出现在from/join子句中),
Select x
将生成列
x
,如果它只出现在一个联接表中,
select t.x
将检索表
t
x
列。
SELECT SubjectCode     
from  LessonTbl lt
Left Outer join  subjectTbl st
on       lt.subjectCode    = st.subjectCode      
where st.teacherCode=20.
SELECT A.*
FROM lesson A
JOIN subject B ON A.SubjectCode = B.SubjectCode
WHERE B.teacherCode = '20'
Select a.*
From Lesson a
Inner Join Subject b on a.SubjectCode = b.SubjectCode
where c.TeacherCode = '20'