2017-04-26 78 views
1

我正在尝试将db2简单查询改编为SQL SERVER。此查询的SQL服务器上的DB2列xxx被指定了多次表

select * 
from pb_console.users u 
join ( 
    select * from pb_console.users_user_role j join 
    pb_console.users_roles r on j.role_id = r.role_id) as jj 
on jj.user_id = u.user_id 

工作正常失败,出现错误:

The column 'ROLE_ID' was specified multiple times for 'jj' 

我已尝试的加入为左表中删除角色_id:

select * from pb_console.users u join ( 
    select user_id, role_rif from 
    pb_console.users_user_role j join (select role_id, role_name from 
pb_console.users_roles) r 
on 
j.role_id = r.role_id) as jj on jj.user_id = u.user_id 

但产生于。

The column 'role_id' was specified multiple times for 'jj'. 

我也曾尝试为第一个role_id使用不同的别名,但没有成功。

我该如何解决这个问题?

回答

3

将引发错误,因为ColumnNameROLE_ID是存在于表pb_console.users_user_role & pb_console.users_roles所以尽量指定只需要如下列

SELECT * 
FROM pb_console.users u 
join ( 
    SELECT J.RoleID,J.User_ID FROM pb_console.users_user_role j 
    JOIN pb_console.users_roles r ON j.role_id = r.role_id) AS jj 
on jj.user_id = u.user_id 
1

你有错误:在你的代码,因为你没有指定在SELECT语句中的任何列,请在下面的查询语句

select from pb_console.users_roles 

指定所需的列应该Incorrect syntax near the keyword 'from'

select role_id from pb_console.users_roles 

对于错误:

The column 'role_id' was specified multiple times for 'jj'.

尝试与alias.columnname在所有select语句

select * from pb_console.users u join ( 
    select j.user_id, j.role_id from 
    pb_console.users_user_role j join (select role_id, role_name from 
pb_console.users_roles) r 
on 
j.role_id = r.role_id) as jj on jj.user_id = u.user_id 
+0

我已经编辑查询原因有丢失的列,请参阅 – Argentina

+0

第二个块中仍然存在缺少列的语句:select from pb_console.users_roles –

+0

好的抱歉,现在看到问题,列名不存在改进 – Argentina

1
select * from pb_console.users 

不应使用语法。

处理此问题的静态方法: 在SSMS编辑器中,右键单击pb_console.users表以获得“select *”细节语法...并覆盖以前由Joby或Sandip告知的别名。

动态方式: 创建一个存储过程来检索表的当前结构通过构建“执行”运行SQL语句...哈德方式...

相关问题