当where子句子查询的列名无效时返回所有记录的SQL查询。。。?
因此,在遗留应用程序中有一个查询从未运行过,因为子查询是错误的。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'”。为什么会发生这种情况?为什么这
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?