没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|行业资讯|编辑:董玉霞|2022-06-10 10:26:54.423|阅读 241 次
概述:本文将介绍常见的SQL 查询错误, 数据库管理工具Navicat Premium是一套数据库管理工具,让你使用一个程序即可同時连接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
本文将介绍常见的SQL 查询错误, 数据库管理工具Navicat Premium是一套数据库管理工具,让你使用一个程序即可同時连接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库。
在这个关于“常见的 SQL 查询错误”的系列中,我们一直在探索看似直观的 SQL 查询构造方法如何导致反模式,从而导致错误结果和/或性能降低。上周,我们暂停了这个系列,讨论了 SQL 中的谓词。在本期文竟中,我们将学习它们的位置如何对查询执行产生负面影响,尤其是在外部联接中。
在链接相关的表和视图时,可使用四种基本的联接类型:内部联接、左联接、右联接和外部联接。内部联接不会返回任何一个表中在另一个表中不匹配的行。外部联接可以返回一个或两个表中不匹配的行。而最后三种连接类型都是外部联接的一种,其中:
虽然外部联接在数据库从业者中肯定占有一席之地,但即使在不需要它们的情况下,开发人员也倾向于使用它们。此外,外部联接查询可能会产生完全不同的结果,具体取决于你构建它的方式以及你在查询中放置谓词的位置。为了说明这一点,让我们看看一个示例。
我们想检索所有客户的列表(无论他们是否下过任何订单),以及自 2005 年 6 月开始以来他们下的订单总数。为此,我们将使用外部联接来链接 customers 和 orders 表,如下所示:
SELECT C.customerName, count(O.customerNumber) AS 2005_orders FROM customers AS C LEFT OUTER JOIN orders AS O ON C.customerNumber = O.customerNumber WHERE O.orderDate >= '2005-05-01' GROUP BY C.customerName ORDER BY 2005_orders DESC;
查询结果应包含第一个表和第二个表中所有可能的行组合,也称为笛卡尔积。不幸的是,当我们在 Navicat Premium 16 中运行查询时,仅返回 13 行,尽管表中有 122 个客户(未显示):
为了理解哪里出了问题,让我们一步一步从列和外部联接开始重建查询:
现在我们得到了所有的客户。那些没有下任何订单的客户的 customerNumbers 为 NULL,因为它们来自 orders 表。
现在,让我们应用 WHERE 子句谓词:
问题是 WHERE 子句中的谓词将外部联接变成了内部联接。为了纠正这个问题,我们需要将 WHERE 谓词添加到联接条件:
我们现在可以调整原本的查询以获取所有客户:
谨记要时刻注意筛选掉的行的位置。在上述示例中,WHERE 子句是问题所在。在一个更复杂的示例中,如果有多个联接,错误的筛选可能发生在后续表运算符(如联接到另一个表)而不是 WHERE 子句中。
更多有关Navicat Premium使用教程可点击查看,欢迎加入Navicat Premium技术交流QQ群:765665608。
Navicat Premium 是一套数据库管理工具,让你使用一个程序即可同時连接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库。了解更多购买详情可联系慧都在线客服。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
在大型技术项目中,工具链割裂、协作低效、安全失控是架构师与开发团队的共性痛点。Sparx Systems的Enterprise Architect(Sparx EA)终极版以四大核心技术能力直击这些挑战,成为企业级建模与系统工程的战略级解决方案。本文将深度解析其技术竞争力内核。
在自动化测试过程中,快速识别问题并高效修复错误是确保软件质量的关键。然而,传统的测试方法往往依赖手动检查日志,导致效率低下,甚至遗漏关键问题。TestComplete提供了强大的测试报告与分析功能,帮助团队快速定位错误、优化测试流程,并提升整体开发效率。本文将深入探讨如何利用TestComplete的报告和分析功能,让您的自动化测试更加高效、精准。
关于不同受众的3D PDF工具说明,Tech Soft 3D为两类不同的受众提供多种3D PDF工具:应用开发者和终端用户。 1、开发者工具(例如我们的HOOPS工具包)适用于需要软件开发工具包以创建专业应用程序的用户。 2、终端用户应用包括Theorem、SpinFire等,这些工具允许用户更动态地与三维数据交互。
Java 开发团队常常面临测试覆盖率与开发效率的双重挑战。通过引入 AI 与自动化工具,团队不仅能减轻静态分析与单元测试的负担,还能在保障代码质量的同时提升开发节奏。本文以 Parasoft Jtest 为案例,深入探讨了当前主流的 AI 测试实践如何帮助企业实现代码级测试的优化与落地。
Navicat Premium 是一套数据库管理工具,让你使用一个程序即可同時连接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库。
Navicat for OracleNavicat for Oracle是一套超强的Oracle数据库系统管理工具,包括数据模型工具、数据或结构同步、导入或导出、和报表,令维护数据的进程更容易。
Navicat for MySQLNavicat for MySQL 是一套管理和开发 MySQL 或 MariaDB 的理想解决方案。
Navicat for SQL ServerNavicat for SQL Server 是一套专为 Mircosoft SQL Server设计的强大数据库管理及开发工具
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号