如何在SQL中替换左连接
发布时间:2020-05-24 18:52:36 所属栏目:MsSql 来源:互联网
导读:任何人都可以告诉我如何在不使用左连接的情况下编写等效的左连接. Select * from a left join b on a.name = b.name. 请记住,SQL的外连接是一种关系联合,它专门用于投影空值.如果你想避免使用null值(在我看来是一件好事),你应该避免使用外连接.请注意,现代关
|
任何人都可以告诉我如何在不使用左连接的情况下编写等效的左连接. Select * from a left join b on a.name = b.name. 解决方法请记住,SQL的外连接是一种关系联合,它专门用于投影空值.如果你想避免使用null值(在我看来是一件好事),你应该避免使用外连接.请注意,现代关系语言完全没有使用null和outer连接的概念.这个外连接: SELECT DISTINCT T1.id,T1.value,T2.other_value
FROM T1
LEFT OUTER JOIN T2
ON T1.id = T2.id;
…在语义上等效于此SQL代码: SELECT T1.id,T2.other_value
FROM T1
INNER JOIN T2
ON T1.id = T2.id
UNION
SELECT T1.id,NULL
FROM T1
WHERE NOT EXISTS (
SELECT *
FROM T2
WHERE T1.id = T2.id
);
第二个查询可能看起来很长,但这只是因为SQL的设计/演变方式.以上只是一个自然的联合,一个联盟和一个半联盟.但是,SQL没有semijoin运算符,如果您的产品没有实现标准SQL的NATURAL JOIN语法,则要求您在SELECT子句中指定列列表并编写JOIN子句,这会导致很多代码表达非常简单的内容. 因此,您可以编写代码,例如上面的第二个查询,但使用实际的默认值而不是空值. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- sql-server – SQL Server相当于Oracle的“CONNE
- SQL SERVER 2005 最小安装经验
- laravel – 强制Eloquent模型重新解析数据库连接
- sql – 为什么递归CTE在程序上运行分析函数(ROW_
- sql-server – 使用视图时,表索引如何发挥作用?
- sql-server – 如何在sqlserver中使用ROUNDDOWN
- CentOS系统中安装MySQL和开启MySQL远程访问的方法
- tsql – 有没有办法在t-sql中的print语句后停止额
- SQL Server SQL语句练习实例之四 找出促销活动中
- sql-server – 如何删除表上的所有默认约束约束
热点阅读
