sql2008提示“列名无效”,但是能正常查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql2008提示“列名无效”,但是能正常查询相关的知识,希望对你有一定的参考价值。

我的机器上既有sql2005又有sql2008,今天我把一个用sql2005创建好的数据库移到sql2008上面做修改,结果改了一张用户表,添加了一个字段,右键“选择前1000”行,发现那些sql语句里面报错了(其实是警告),刚添加的字段下面有红色波浪形,鼠标一上去系统给出提示“列名无效”,我执行一下sql,查询结果出来了,没影响。但是就是没办法去掉那个错误提示,看着很不舒服

出现此问题的原因为:设置问题造成的。

解决的方法和详细的操作步骤如下:

1、第一步,右键单击列名称,选择“修改”选项,然后单击,见下图,转到下面的步骤。

2、第二步,完成上述步骤后,可以看到两边的列名相同,见下图,转到下面的步骤。

3、第三步,完成上述步骤后,选择StudentName列中的最后一个允许为null值,见下图,转到下面的步骤。

4、第四步,完成上述步骤后,使用“ctrl +  s”进行保存。 请注意,成功保存后,小星号消失了,见下图,转到下面的步骤。

5、第五步,完成上述步骤后,右键单击列表,然后选择“刷新”选项,可以确认修改成功,见下图,转到下面的步骤。

6、第六步,完成上述步骤后,确保StudentName列中的Not
 null变为“null”,见下图。这样,就解决了这个问题了。

参考技术A 在SQLServer2008中,当设计(修改)表结构之后,再用SQL语句时,列名会显示无效,但执行可以通过.原因是SQL Server的intellisense(智能感知功能)需要重新整理一下,用快捷键Ctrl+Shift+R即可
http://blog.csdn.net/bigheadsheep/article/details/7872299
参考技术B 把sql关闭后再打开,就可以了,我也出现过 参考技术C 能否把图片贴出来看看

SQL 查询 - 无效的列名和参数 - data.SE

【中文标题】SQL 查询 - 无效的列名和参数 - data.SE【英文标题】:SQL query - invalid column name and parameter - data.SE 【发布时间】:2012-09-19 16:10:28 【问题描述】:

不是程序员,而是使用 data.stackexchange.com。我正在查询公共 SE 数据浏览器,并且我指定的列名无效。另外,如何指定计数(帖子)和计数(投票)? 有谁查询过 data.se 并且知道 db 模式的人能够帮助我更正这段代码吗?

Select Count (u.Id)
From Users u 
Left Join Posts p on u.Id = p.OwnerUserId
Left join SuggestedEdits e on u.Id = e.OwnerUserId
left join Votes v on u.Id = v.UserId
WHERE ((u.CreationDate BETWEEN 'qwerty' AND 'qwerty')
AND (p.CreationDate BETWEEN 'qwerty' AND 'qwerty')
AND (p.ClosedDate is null)
OR (e.CreationDate BETWEEN 'qwerty' AND 'qwerty'))
AND Count (Posts) = x
OR Count (Votes) = y
Group by u.CreationDate, p.OwnerUserId, UserTypeId, u.DisplayName, p.CreationDate

【问题讨论】:

@Miguel-F 感谢您的提示。我确实检查了侧边栏并在那里使用了有关架构的信息,但仍然无法使其正常工作。 什么不适合你?您的 Select 语句在哪里? 我的选择语句也不起作用。我想要计算所有满足这些条件的用户 ID。对不起,我是菜鸟。 你能分享你的 WHERE 语句的其余部分吗?您可以更改发布前可能需要保密的任何值。 @Miguel-F 刚刚更新了 WHERE 语句。非常感谢。 【参考方案1】:

您是否尝试过撰写查询选项found here。如果您单击该链接,它会在侧边栏的右侧显示数据库架构。

注意侧边栏可以隐藏,只需点击链接再次显示。这是你需要的吗?

编辑

我仍然不确定您到底要做什么。如果我处于你的位置,我会首先对每个单独的表运行一些简单的查询。这样您就可以看到那里存储了哪些数据。

运行此查询并查看结果:

SELECT *
FROM Users
WHERE CreationDate BETWEEN '2012-06-01 08:00:00' AND '2012-06-02 09:00:00'

运行此查询并查看结果:

SELECT *
FROM Posts
WHERE CreationDate BETWEEN '2012-06-01 08:00:00' AND '2012-06-02 08:10:00'

运行此查询并查看结果:

SELECT *
FROM Votes
WHERE CreationDate BETWEEN '2012-06-01 08:00:00' AND '2012-06-02 08:10:00'

我不确定您为什么在您的联接中包含 SuggestedEdits 表,因为它似乎没有在其他任何地方使用该表。所以别说了。

现在,在看到数据的样子之后,您应该能够将它们拼凑起来,找到您想要的东西。哪个我还不知道?希望这样的事情可以帮助您入门。此查询将返回一些结果,但我不确定它是否是您所追求的。

SELECT Count(u.Id), Count(p.Id), Count(v.Id)
FROM Users u
LEFT JOIN Posts p on u.Id = p.OwnerUserId
LEFT JOIN Votes v on u.Id = v.UserId
WHERE u.CreationDate BETWEEN '2012-06-01 08:00:00' AND '2012-06-02 09:00:00'
GROUP BY u.CreationDate, p.OwnerUserId, v.VoteTypeId, u.DisplayName, p.CreationDate

【讨论】:

以上是关于sql2008提示“列名无效”,但是能正常查询的主要内容,如果未能解决你的问题,请参考以下文章

SQL里边提示列名无效是怎么回事呀

c#中给sql数据库的表储存数据时提示“列名无效”

SQL - 在 DAO 中执行时列名无效

hibernate创建本地查询后进行查询的时候报错: could not execute query;列名无效

如何从子查询中获取 ResultSet 的别名?

sql 2005 case 语句 - 列名无效