我想知道SQL在这些连接语句上执行的方式是否有任何不同:
SELECT * FROM a,b WHERE a.ID = b.ID
SELECT * FROM a JOIN b ON a.ID = b.ID
SELECT * FROM a JOIN b USING(ID)
Run Code Online (Sandbox Code Playgroud)
有性能差异吗?还是算法差异?
或者只是语法糖?
MS SQL Server数据库.
我有这个简单的结构:(抱歉主键不在正确的位置)

在TEACHER表中,我有一个外键"Chief",它引用了TEACHER.ID(同一个表).在进行SELECT查询时,我怎么能得到一个整数(Teacher.ID),而不是一个Chief的名字(TEACHER.Name for Chief)?
这个只得到一个整数(Chief的ID):
SELECT DEPARTMENT.Name, TEACHER.Name, TEACHER.IDCode, POST.Name, TEACHER.Tel, TEACHER.Salary, TEACHER.Rise, TEACHER.HireDate, Chief
FROM TEACHER, DEPARTMENT, POST
WHERE TEACHER.ID_Post = POST.ID AND
TEACHER.ID_Department = DEPARTMENT.ID;
GO
Run Code Online (Sandbox Code Playgroud) 我正在尝试连接几个表来生成具有先决条件的类列表.一切都很好,除了我需要两个类的名字前提条件和原始类.
到目前为止我有
SELECT course_name, c.course_number, course_name, prereq
FROM rearp.course c, rearp.prereq p
WHERE c.course_number = p.course_number;
Run Code Online (Sandbox Code Playgroud)
这给了我(你已经可以看到一个问题,course_name在那里两次[不知道如何处理它否则])
忽略格式只是注意课程名称或先决条件仅对应于原始课程而不是先决条件.
我的问题是我不能得到匹配的名字.
sql ×3
expression ×1
join ×1
key ×1
oracle ×1
performance ×1
select ×1
sql-server ×1
syntax ×1