SQL重复列名错误

SQL重复列名错误,sql,Sql,我试图在一个庞大的SQL语句(不是我的)中找到一个错误——为了使它可读,我删掉了很多语句——即使删减了,它仍然会抛出错误 SELECT DISTINCT Profiles.ID FROM (select * from Profiles RIGHT JOIN FriendList ON (FriendList.Profile = 15237) order by LastLoggedIn DESC ) as Profiles 这将返回一个错误 重复的列名“ID” 我已经测试了最

我试图在一个庞大的SQL语句(不是我的)中找到一个错误——为了使它可读,我删掉了很多语句——即使删减了,它仍然会抛出错误

SELECT DISTINCT Profiles.ID 
FROM 
   (select * from Profiles RIGHT JOIN FriendList ON (FriendList.Profile = 15237) 
    order by LastLoggedIn DESC ) as Profiles
这将返回一个错误

重复的列名“ID”

我已经测试了最后一部分(
select*from Profiles…order by LastLoggedIn DESC
),它本身工作正常

我曾试图通过在不同的部分中更改列名来排除故障,但没有任何运气

我读到的一个解决方案是删除DISTINCT,但这没有帮助

我就是看不出重复列错误是从哪里来的。这可能是一个数据库完整性问题吗


非常感谢您的帮助。

您的
个人资料
好友列表
表都有
ID
列。因为您说的是
select*
,所以在子select中有两列名为
ID
,别名为
Profiles
,SQL不知道Profiles.ID指的是哪一列(请注意,
Profiles
这里指的是子查询的别名,而不是同名表)

由于您只需要ID列,因此可以将其更改为:

SELECT DISTINCT Profiles.ID FROM 
( select Profiles.ID from Profiles RIGHT JOIN FriendList ON (FriendList.Profile = 15237) 
order by LastLoggedIn DESC ) as Profiles

您有一个名为Profiles的表,并且您正在From中“创建”一个名为Profiles的临时表,这将是我对问题原因的猜测。调用temp banana并尝试从中选择DISTINCT bananas.ID,然后查看是否有效

正如错误所述,您要连接在一起的每个表都有一个名为
ID
的列。您必须指定所需的
ID
列(
Profiles.ID
FriendList.ID
),或在连接条件中包含
ID

将“select*”替换为“select col1,col2…”,错误应该变得明显(即多个名为“ID”的列)。与distinct或数据库完整性无关。

配置文件表中是否有id列与另一个表的id列冲突?您正在选择所有列,我建议减少选择列的数量(将*更改为列名),看看这是否解决了您的问题。是否您的内部
SELECT
中的
Profiles
FriendList
表都有
ID
列??因此,您基本上有两列,都称为
ID
-您正在从该
JOIN
中选择所有内容-因此,当您说
selectdistinct Profiles.ID.…
?!?时,您指的是哪个
ID
?!?!?马克斯和罗伯特-是的,这就是正在发生的事情。我也猜了很多,但这超出了我对SQL的理解。问题是SQL语句非常庞大,而且是动态构建的。对于这个问题,我直截了当。我要把它扔给那个人,因为不管是搞乱这个还是db的连锁反应都太可怕了,无法想象。