sql-server - 在非键列上自联接

标签 sql-server tsql join self-join

JOIN将表ON不包含唯一值的列自身是否会产生分析结果?

我见过的大多数自连接查询都是在 PK 列上完成的。我在计算正确数字时遇到了问题,所以我想知道我的做法是否有意义。

例如

SELECT * 
FROM Employee a
JOIN Employee b
ON a.Birthdate = b.Birthdate

最佳答案

正如您现在编写的查询,它将返回所有符合以下条件的员工对:

  1. 具有相同生日的不同员工记录
  2. 所有员工记录都将返回链接到他们自己

我认为这没有多大意义。您能否提供更多信息,说明您想要实现什么以及 Employee 表的结构是什么?

如果 Birthdate 可以为空,则您必须修改 ON 子句以加入 NULL 值,例如:

SELECT * 
FROM Employee a
JOIN Employee b
ON COALESCE(a.Birthdate,'19000101') = COALESCE(b.Birthdate,'19000101')

关于sql-server - 在非键列上自联接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38583576/

相关文章:

sql-server - 如何从 SQL Server Integration Services 目录导入包?

SQL,关键字 'FROM' 附近的 CASE 语句语法不正确

sql - SSIS 的值类型 ComObject 只能转换为 Object 类型的变量

sql - 根据一列的最小值选择行

SQL:速度改进 - 在 cond1 或 cond2 上左连接

sql - 了解 SSMS 中的索引和缺失索引建议

sql - 从表 b 更新表 a 其中(条件)

php - 如何在 php 中对左连接查询返回的数组数据进行分组?

sql-server - Sql Server - 使用 Windows 身份验证连接

sql - 4表查询/连接。获取重复行