Sql server 连接两个表的正确方法
假设我有两张桌子: TABLE001->员工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
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查询中尝试这个!!!非常感谢。