当前位置: 首页 > 面试题库 >

的SQL Server 2008的管理工作室不检查我的查询语法

钮兴安
2023-03-14
问题内容

一如往常,会有一个合理的解释令我感到惊讶,但直到那时....

我有这个查询

delete from Photo  where hs_id  in (select hs_id  from HotelSupplier where id = 142)

这执行得很好(后来我发现整个照片表是空的)

但是奇怪的是:hs_idHotelSupplier中没有字段,它被称为hs_key

所以当我执行最后一部分

select hs_id  from HotelSupplier where id = 142

分别(用鼠标选择查询的那一部分并按F5键),我得到一个错误,但是当我在in子句中使用它时,它不会!

我想知道这是否正常吗?


问题答案:

hs_id 从外部查询中获取值。

一个查询不投影其select列表中所选表的任何列是完全有效的。

例如

select 10 from HotelSupplier where id = 142

返回一个结果集,其中包含与该where子句匹配的行数以及10所有行的值的行数。

不合格的列引用是从最接近的范围向外解析的,因此这仅被视为相关的子查询。

该查询的结果将是删除Photo其中hs_id不为null的所有行,只要HotelSupplier至少具有id =
142的一行(因此子查询至少返回一行)

如果您考虑一下这样做的效果,可能会更清楚一点

delete from Photo  where Photo.hs_id  in (select Photo.hs_id)

这当然等同于

delete from Photo where Photo.hs_id = Photo.hs_id

顺便说一句,这是我个人在Microsoft Connect上错误地看到的最常见的“错误”。Erland
Sommarskog将其包含在他的愿望清单中,用于SET STRICT_CHECKS ON



 类似资料:
  • 我正在使用ApacheLucene5.0。0并在使用QueryParser时遇到问题。我试图创建一个查询,但得到一个ParseException。 以下是我的代码: 这是我得到的例外: 如果有帮助,我已经包含了以下jar文件: lucene-analyzers-common-5.0.0.jar lucene-core-5.0.0.jar lucene-queries-5.0.0.jar lucen

  • 我试图在MongoDb上获取一个名为“fecha”的日志,其中包含一个日期字段。 在Java中执行代码后,我得到下一个查询: 但是我没有得到任何结果。以下是一些数据样本: 我的Java代码是下一个: 谢谢

  • http://localhost:8983/solr/prashant1/spell?q=blakc&spellcheck=on&wt=json 结果 但我需要与select查询相同的结果,它不能从SOLR管理中工作。 有没有设置和步骤要做?

  • 问题内容: 我正在使用嵌套集模型在iPhone上的本地SQLite数据库中存储较大的数据层次结构。我从他们的网站上阅读了MySQL技术文章,了解如何执行此操作,但是他们建议的查询(以及我需要的查询)之一似乎不适用于SQLite,并且我不确定如何解决它。 SQLite报告不是列,我认为这是因为其子查询实现不完整。有人对如何解决此限制有任何想法吗? 查询的目的是获取给定父节点的所有直接子代。 问题答案

  • 我正在从事WordPress项目。在我的服务器上运行PHP7.0并安装WordPress 4.9.4。我面临的问题是:我已经创建了一个模板文件,我正在尝试打印url中的查询字符串变量,然后返回Array()空数组。 当我在根文件夹的另一个文件上尝试print_r语句时,它可以正常工作,但在functions.php或模板文件(在WordPress页面上)上它不能工作。 有人能告诉我这是怎么回事吗?

  • 我在mysql查询中使用CASE语句,我必须检查同一查询中是否存在列。 有可能这样做吗?如果是,请帮忙。 我的查询为例- 当“Status”时选择CASE column1,然后选择“Status”当“value”时(当id不为NULL时选择CASE id,然后选择“status1”,否则选择“status2”结束为table1 where condition中的ScheduleStatus)结束为