如何使用表中可能不可用的 ID 构建 SQL 语句?

2023-11-30

使用 Microsoft SQL Server 2008,假设有一个 table1 保存所选的省、区、公社和村庄的 ID。然后是表2,其中包含省、区、公社和村庄的ID和名称。省份和地区是必填字段,并且始终会被填满。公社和村庄可能会被填满,但甚至可能不会被填满,因为它们不是必需的。

在不知道公社和村庄的 id 是否填充在 table1 中的情况下,构建动态 SQL 语句的最佳方法是什么?

SELECT tbl1.province, tbl1.district, tbl1.commune, tbl1.village 
  FROM dbo.table1 AS tbl1 
   AND dbo.table2 AS tbl2 
 WHERE tbl1.province = tbl2.province_id
   AND tbl1.district = tbl2.district_id 
   AND tbl1.commune = tbl2.commune_id 
   AND tbl1.village = tbl2.village_id

如果 table1 中的 id 未填充,则此语句会给出错误结果。


An OUTER JOIN在这里不起作用,因为您不想拥有 table2 中的所有元素,而只想拥有表 1 中存在相应元素的元素。

你会想做这样的事情:

SELECT tbl1.province, tbl1.district, tbl1.commune, tbl1.village 
FROM dbo.table2 AS tbl2 
INNER JOIN dbo.table1 AS tbl1
ON tbl1.province = tbl2.province_id 
AND tbl1.district = tbl2.district_id 
AND (tbl1.commune is NULL OR (tbl1.commune = tbl2.commune_id)) 
AND (tbl1.village is NULL OR (tbl1.village = tbl2.village_id))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用表中可能不可用的 ID 构建 SQL 语句? 的相关文章

  • SQL Server 差异工具

    在一个团队中工作时 人们很容易修改开发 SQL Server 表并忘记它 或者准备部署更改但必须等待部署 这使得我们的开发表和活动表不一致 从而在推送存储过程时导致问题 是否有一个工具可以让我输入 SPROC 名称并让它检查开发数据库和实时
  • 如何通过循环变量在 dbt 中多次运行 SQL 模型?

    我有一个 dbt 模型 测试模型 接受地理变量 zip state region 在配置中 我想通过循环变量来运行模型三次 每次使用不同的变量运行它 问题是 我有一个如下所示的宏 它将变量附加到输出表名称的末尾 即运行测试模型 with z
  • 更新plpgsql中触发器函数中的多列

    给出以下架构 create table account type a id SERIAL UNIQUE PRIMARY KEY some column VARCHAR create table account type b id SERIA
  • 将多行合并为一行并根据行数附加列

    我正在尝试将同一个表的多行合并为一个 我有一个像这样的示例表 Col1 Col2 Col3 Col4 Col5 Col6 1 BH1 CB 12 CC CC Conveyor Mal 1 BH1 CB 104 ZC ZC Full Emp
  • sql查询中的truncate和delete命令有什么区别[重复]

    这个问题在这里已经有答案了 可能的重复 SQL中TRUNCATE和DELETE有什么区别 https stackoverflow com questions 139630 whats the difference between trunc
  • Spring Boot MSSQL Kerberos 身份验证

    目前在我的春季靴子中application properties文件中 我指定以下行来连接到 MSSql 服务器 spring datasource url jdbc sqlserver localhost databaseName spr
  • SQL:查找每个跑步者跑步之间的平均天数

    因此 如果我们给出下表 runner ran Carol 2011 02 01 Alice 2011 02 01 Bob 2011 02 01 Carol 2011 02 02 Bob 2011 02 02 Bob 2011 02 03 B
  • 通过将行旋转为动态数量的列来在 MySQL 中创建摘要视图

    我在 MySQL 中有一个表 其中包含以下字段 id company name year state 同一客户和年份有多行 以下是数据示例 id company name year state 1 companyA 2008 1 2 com
  • 使用包含空值列的 WHERE 子句的更新语句

    我正在使用另一个表中的数据更新一个表上的列 这WHERE子句基于多个列 并且某些列为空 根据我的想法 这个空值是什么throwing off你的标准UPDATE TABLE SET X Y WHERE A B陈述 See 这个 SQL 小提
  • SQL Server 支持哈希索引吗?

    所有索引都在SQL Server B Tree中吗 主键和外键肯定应该是基于哈希的索引吗 SQL Server中并非所有索引都是B树索引 SQL Server 2012添加了列存储索引 http msdn microsoft com en
  • PHP DBlib PDO 问题

    我正在尝试通过 php 连接到 MSSQL 服务器 但我的 pdo 连接给我带来了困难和我不太理解的错误 我在下面粘贴的代码一周前运行得很好 突然间它就停止了 没有任何人进行任何更改 我仍然可以连接到服务器并直接从命令行运行查询 但我在 p
  • ORA-01749: 您不能向自己授予/撤销权限

    我正在运行以下查询RATOR MONITORING授予引用权限的架构RATOR MONITORING CONFIGURATION SMSC GATEWAY表到RATOR MONITORING schema GRANT REFERENCES
  • 更新每组单行

    的背景 我有一个临时表 其中包含唯一的 rowID OrderNumber 和 guestCount 等信息 RowID 和 OrderNumber 已存在于该表中 并且我正在运行一个新查询来填充每个 orderNumber 缺少的 gue
  • 部署 dacpac 所需的权限

    我正在尝试使用 sqlpackage exe 在租户上部署 dacpac 目前 我正在向将部署此功能的帐户授予 SysAdmin 或 db owner 权限 并且它工作正常 但在生产中 如果目标租户数据库属于其他应用程序 我可能无法获得这些
  • Java 中的 ExecuteUpdate sql 语句不起作用

    我正在学习如何将 SQL 与 Java 结合使用 我已成功安装 JDBC 驱动程序 并且能够从数据库读取记录并将其打印在屏幕上 我的问题发生在尝试执行更新或插入语句时 没有任何反应 这是我的代码 问题所在的方法 public static
  • SQLite 条件 ORDER BY 中的 DESC

    我需要选择按以下逻辑排序的记录 但是当 DESC 处于条件中时 SQLite 会引发错误 ORDER BY CASE WHEN parentGUID IS NULL THEN datePosted DESC ELSE datePosted
  • T-SQL 表名别名

    在我的 T SQL 脚本中 我多次引用相同的长表名称 我在不同的表上使用这个查询 有没有办法通过变量引用表名 如果是这样 我可以简单地在脚本将使用的顶部声明一个变量 只需设置值 我就可以在各种表上运行它 而无需在脚本中进行更改 有几个选择
  • 最佳实践 - 存储过程日志记录

    如果您有一个长时间运行的 SP 您会以某种方式记录其操作还是只是等待此消息 命令成功完成 我认为 关于这个主题可以有很多解决方案 但是有没有最佳实践 一个经常使用的简单解决方案 EDIT 我发现了一个关于这个主题的有趣链接 http web
  • 如何在SqlAlchemy中执行“左外连接”

    我需要执行这个查询 select field11 field12 from Table 1 t1 left outer join Table 2 t2 ON t2 tbl1 id t1 tbl1 id where t2 tbl2 id is
  • 在 Navicat Premium 中连接到 LocalDB 服务器

    Recently I installed LocalDb Serer on my laptop I am trying to establish a connection between Navicat and LocalDB server

随机推荐

  • Mpi 在 Windows 中的使用

    我将 mpi 安装到 Windows 中 并且可以使用它的库 问题是 当我在 Windows 中编写时 mpiexec n 4 proj exe 进入命令提示符后 它不会进行正确的操作 4个不同的进程分别使用整个代码文件 它们的行为不像仅在
  • C# 并行运行多个非阻塞外部程序

    我需要从我的应用程序运行外部可执行文件的多个实例 该可执行文件的平均运行时间约为 3 分钟 我想重定向这些进程的输出 并更新 GUI 中的进度条 当然 我不想等到他们回来才能继续使用我的应用程序 我认为我应该为每个实例创建一个线程 并在线程
  • Ms Access 多选列表框移动器

    我有两个列表框 lfmVocabulary 和 lfmVocabularyAssign 它们都与表单没有绑定 我在实现代码设计的某些方面遇到了困难 到目前为止 我可以通过查询记录集使用值填充第一个列表表单 但我无法将项目从一个框传输到另一个
  • 无法解析 javax.xml.stream.XMLStreamReader 类型

    无法解析 javax xml stream XMLStreamReader 类型 它是从所需的 class 文件间接引用的 我在一行中收到此错误 我缺少哪个 jar javax xml stream XMLStreamReader在 Jav
  • 在 SQL Server XML 处理中参数化 XPath 以便修改()

    正如标题所示 我尝试参数化 SQL Server 中 XML 数据列的 edit 方法的 XPath 但遇到了一些问题 到目前为止我有 DECLARE newVal varchar 50 DECLARE xmlQuery varchar 5
  • 将外部js注入到自己创建的iframe中

    所以我试图将外部 css 和 js 注入到自己创建的 iframe 中以提供额外的安全层 因此不存在跨域问题 这是代码
  • 如何使用 POP3 检索 Gmail 子文件夹/标签?

    下面的代码使用javamail API来访问gmail String host pop gmail com int port 995 Properties properties new Properties properties put m
  • 从 Xcode 启动 iOS 模拟器并出现黑屏,然后 Xcode 挂起且无法停止任务

    我在 iOS 模拟器中运行基本 iPhone 应用程序时遇到问题 在阅读斯坦福 iTunes CS193p 讲座时 我已经搜索了一段时间 Google 和 SO 但到目前为止找不到解决方案 类似的错误还有很多 但解决方案似乎并不能解决这个问
  • cor.test() 的矩阵版本

    Cor test 需要向量x and y作为参数 但我有一个完整的数据矩阵 我想成对地测试 Cor 将此矩阵作为参数就好了 我希望找到一种方法来为cor test 其他人的常见建议似乎是使用cor prob https stat ethz
  • Jquery 旋转 div [重复]

    这个问题在这里已经有答案了 我无法旋转 div 控制台中没有警告或错误 您可以查看JSFiddle 版本在这里 我使用的代码是 div2 click someFunction2 function someFunction2 div2 ani
  • 禁用 HTML5 范围输入的跟踪

    我正在尝试找到一种方法来阻止用户单击 HTML5 范围输入的 轨道 部分 本质上 我只希望用户能够使用 句柄 来更改范围值 这可能吗 至少在 chrome 上可以通过指针事件实现 input type range pointer event
  • 客户端与服务器对话时如何克服“Access-Control-Allow-Origin”错误

    因此 我正在使用 swiip 的一个 yeoman 项目 名为 Generator gulp Angular 只需执行 npm search gulp Angular 您就会看到它 开箱即用的客户端从 127 0 0 1 3000 运行 我
  • 从 java webstart 应用程序中的 jar 获取资源

    我正在尝试在 Java Webstart 应用程序中加载大量资源 我最初尝试使用以下方式加载这些 ClassLoader loader MyClass class getClassLoader URL url loader getResou
  • mongodb keep_mutation阶段解释

    我使用mongo的explain 来检查一些查询的性能 有时会出现keep mutation阶段 如下所示 executionStats executionStages stage KEEP MUTATIONS nReturned 1 ex
  • Rails 3 设计 401 未经授权的 ajax 调用

    我遇到了与这个问题类似的问题 Rails 3 中的 jQuery Ajax 调用收到 401 未经授权的请求 我已将 token authenticatable 添加到我的设计模型中 在我的 ajax 调用操作中 def rate para
  • 如何将列表应用于 pandas 组[重复]

    这个问题在这里已经有答案了 我看到这个问题 在 pandas groupby 中对列表中的行进行分组 但我想要应用两列以上list input df pd DataFrame index c1 c2 c3 1 A 6 1 2 A 5 2 3
  • 如何通过按键切换元素的内容?

    我目前正在尝试创建一个网站 如果我按 q p 标签将从 Q 更改为 A 目前 这适用于下面的代码 然而问题是 当按 q 时 它需要返回到 A 我尝试让它与removeEventListeners 一起使用 但它似乎不起作用 Like die
  • 如何递归地从表中删除项目?

    我有一个 MySQL 表 文件夹 CREATE TABLE IF NOT EXISTS folders id int 11 unsigned NOT NULL AUTO INCREMENT folder key varchar 40 NOT
  • sed:在块之后追加

    我对 sed 很陌生 我发现的所有内容都是这里一点 那里一点 我有一个文本文件 其中包含如下所示的块 start a b c whatever 显然 这是一个简化版本 我想在末尾添加一行 start阻止给我 start a b c d wh
  • 如何使用表中可能不可用的 ID 构建 SQL 语句?

    使用 Microsoft SQL Server 2008 假设有一个 table1 保存所选的省 区 公社和村庄的 ID 然后是表2 其中包含省 区 公社和村庄的ID和名称 省份和地区是必填字段 并且始终会被填满 公社和村庄可能会被填满 但