Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当where子句子查询的列名无效时返回所有记录的SQL查询。。。?_Sql_Sql Server - Fatal编程技术网

当where子句子查询的列名无效时返回所有记录的SQL查询。。。?

当where子句子查询的列名无效时返回所有记录的SQL查询。。。?,sql,sql-server,Sql,Sql Server,因此,在遗留应用程序中有一个查询从未运行过,因为子查询是错误的。SQL查询如下所示: SELECT CompanyName FROM Companies WHERE CompanyID = (SELECT CompnyID FROM Users WHERE UserID = 123) 正如您所看到的,在子查询中,CompanyID缺少a,拼写错误。然而,当您运行整个查询时,它将返回公司中的所有记录。但是当您运行子查询时,它会显示“无效的列名'CompnyID'”。为什么会发生这种情况?为什么这

因此,在遗留应用程序中有一个查询从未运行过,因为子查询是错误的。SQL查询如下所示:

SELECT CompanyName
FROM Companies
WHERE CompanyID = (SELECT CompnyID FROM Users WHERE UserID = 123)
正如您所看到的,在子查询中,CompanyID缺少a,拼写错误。然而,当您运行整个查询时,它将返回公司中的所有记录。但是当您运行子查询时,它会显示“无效的列名'CompnyID'”。为什么会发生这种情况?为什么这个查询没有出错?这让我有点困惑,所以我很好奇为什么会运行这个查询。我想这是子查询的一些怪癖吧


谢谢

我想知道这是否是你真正的疑问。您的描述表明,
companys
中有一列名为
CompnyID

表别名是个好主意。使用子查询时,它们应该是必需的。你认为你在写:

SELECT c.CompanyName
FROM Companies c
WHERE c.CompanyID = (SELECT u.CompnyID FROM Users u WHERE u.UserID = 123);
但是,由于
u.CompnyID
不存在,因此将其解释为:

SELECT c.CompanyName
FROM Companies c
WHERE c.CompanyID = (SELECT c.CompnyID FROM Users u WHERE u.UserID = 123)

这将返回两个值相同的所有列。

在公司中是否有列CompnyID?