Sql server 连接两个表的正确方法

Sql server 连接两个表的正确方法,sql-server,Sql Server,假设我有两张桌子: TABLE001->员工 ID | EMPLOYEE | EMPLOYEENAME | GENDER 1 | 000001 | MARK | M 2 | 000002 | SARA | F 3 | 000003 | MIKE | M ID | DATE | EMPLOYEE 1 | 20200720 | 000001 2 | 20200720 | 000002 3 | 20

假设我有两张桌子:

TABLE001->员工

ID | EMPLOYEE | EMPLOYEENAME  | GENDER
1  | 000001   | MARK          | M
2  | 000002   | SARA          | F
3  | 000003   | MIKE          | M
ID | DATE     | EMPLOYEE 
1  | 20200720 | 000001   
2  | 20200720 | 000002   
3  | 20200720 | 000003   
TABLE002->登录

ID | EMPLOYEE | EMPLOYEENAME  | GENDER
1  | 000001   | MARK          | M
2  | 000002   | SARA          | F
3  | 000003   | MIKE          | M
ID | DATE     | EMPLOYEE 
1  | 20200720 | 000001   
2  | 20200720 | 000002   
3  | 20200720 | 000003   
我希望查询只显示TABLE002中的结果,其中员工性别为F

Select * from TABLE002 as A
join TABLE001 as B on B.EMPLOYEE = A.EMPLOYEE
where B.GENDER = 'F'


有区别吗?这只是一个例子。。。两个示例给出的结果相同。

如果两个查询都产生了您想要的结果,那么它们都是问题的有效解决方案。这样,他们是平等的

如果要查看数据库引擎是否以相同的方式在内部处理这两个查询,则需要查看底层查询计划(也称为执行计划)。如果您正在使用Mirosoft SQL Server Management Studio运行查询,则可以开始学习查询计划


具体来说,您希望比较两个查询的结果。如果两个计划相等,则数据库引擎在引擎盖下以相同的方式处理这两个查询。

这本身没有区别,但您也可以使用此代码,通常执行此代码所需的时间较少:

select * from Logins
where Employee in
(
     select Employee from Employees
     where Gender = 'F'
)

内部联接没有区别。但是对于
左连接来说,这将是一个不同的选择。我要求连接/内部连接。谢谢大家的时间和回答!!!请注意安全,照顾好自己和家人!在sql查询中,始终使代码看起来美观。我更喜欢在我的代码中尽可能多地使用
。我一定会在更大的sql查询中尝试这个!!!非常感谢。