0

我有sql查询

select * from "Roles"  Join "Users"  On "Roles".Role="Users".RoleId

它返回错误列 Roles.role 不存在

询问

select * from "Roles"  Join "Users"  On Roles.Role=Users.RoleId

返回错误缺少表“角色”的 FROM 子句条目

我怎么解决这个问题?我不再使用 ms sql

4

3 回答 3

2

您不能在连接条件中使用名称角色。在内部,所有表名,如 Roles、ROLES、roles、RoLeS 都转换为角色(小写)。当您使用“角色”、“角色”、“角色”、“角色”时,名称的使用方式与您所写的完全一致(没有小写转换),因此在 FROM 部分采用“角色”和“用户”表并且在连接条件中,表名是角色和用户,并且不存在这样的表格。

最简单的方法是只使用没有“”的表名,只需使用简单的角色而不是“角色”,这样您就可以编写角色或角色,而不管字母小写/大写。

于 2009-10-24T11:08:40.070 回答
0

我怀疑您需要 write "Roles"."Role" = "Users"."RoleId",因为它抱怨无法找到小写的列名。

正如其他人所提到的,即使您在查询中使用混合大小写,通常最容易将所有内容创建为小写:因此,如果表称为“角色”而列称为“角色”等,您可以编写Roles.Role = Users.RoleId并且标识符将被转换在幕后小写。

于 2009-10-25T12:57:01.437 回答
0

像这样写:

select * from Roles  INNER JOIN Users  On (Roles.Role= Users.RoleId)

检查INNER JOIN 两个表以获取更多信息...

或者您可以使用它与大多数 DBMS 一起使用的简单方法:

select * from Roles,Users where Roles.Role= Users.RoleId
于 2009-10-24T11:06:49.513 回答