我有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
我有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
您不能在连接条件中使用名称角色。在内部,所有表名,如 Roles、ROLES、roles、RoLeS 都转换为角色(小写)。当您使用“角色”、“角色”、“角色”、“角色”时,名称的使用方式与您所写的完全一致(没有小写转换),因此在 FROM 部分采用“角色”和“用户”表并且在连接条件中,表名是角色和用户,并且不存在这样的表格。
最简单的方法是只使用没有“”的表名,只需使用简单的角色而不是“角色”,这样您就可以编写角色或角色,而不管字母小写/大写。
我怀疑您需要 write "Roles"."Role" = "Users"."RoleId"
,因为它抱怨无法找到小写的列名。
正如其他人所提到的,即使您在查询中使用混合大小写,通常最容易将所有内容创建为小写:因此,如果表称为“角色”而列称为“角色”等,您可以编写Roles.Role = Users.RoleId
并且标识符将被转换在幕后小写。
像这样写:
select * from Roles INNER JOIN Users On (Roles.Role= Users.RoleId)
检查INNER JOIN 两个表以获取更多信息...
或者您可以使用它与大多数 DBMS 一起使用的简单方法:
select * from Roles,Users where Roles.Role= Users.RoleId