gpt4 book ai didi

sql - 查询不存在的列不会失败

转载 作者:行者123 更新时间:2023-12-04 21:08:15 24 4
gpt4 key购买 nike

奇怪的情况。

如果我有这些表:

CREATE TABLE t1 (id INT, title VARCHAR(20), someIntCol INT)
GO
CREATE TABLE t2 (id INT, t1Id INT, someData VARCHAR(20))
GO

并做:
SELECT    t1.* 
FROM t1
WHERE t1.id IN (SELECT someIntCol FROM t2)

奇怪的事情:解析器不介意 someIntCol 列不存在

最奇怪的事情:如果我将 someIntCol 更改为 someIntCol2,我会得到一个“无效的列名‘someIntCol2’。”错误

谁能解释一下?

仅供引用,这不是我的代码。我从 this 得到的关联

最佳答案

尝试:

SELECT    t1.* 
FROM t1
WHERE t1.id IN (SELECT t2.someIntCol FROM t2)

这将在执行时抛出异常。

因为 someIntCol存在于 t1 ,它正在使用来自主查询的数据项。

子查询能够使用来自主查询的数据项。因此,为避免这种情况,请在输入数据项时指定表名:
SELECT [TableName].[ColumnName]

如果您在 t1 中有 2 列具有相同名称,这也将防止歧义。和 t2
这是一个 MSDN,它可以让您更好地了解子查询的工作原理:

http://msdn.microsoft.com/en-us/library/aa213262(v=sql.80).aspx

关于sql - 查询不存在的列不会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9887765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com