SQL重复列名错误
我试图在一个庞大的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” 我已经测试了最
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
中的Profiles
和FriendList
表都有ID
列??因此,您基本上有两列,都称为ID
-您正在从该JOIN
中选择所有内容-因此,当您说selectdistinct Profiles.ID.…
?!?时,您指的是哪个ID
?!?!?马克斯和罗伯特-是的,这就是正在发生的事情。我也猜了很多,但这超出了我对SQL的理解。问题是SQL语句非常庞大,而且是动态构建的。对于这个问题,我直截了当。我要把它扔给那个人,因为不管是搞乱这个还是db的连锁反应都太可怕了,无法想象。