1. ホーム
  2. sql

[解決済み] SQL カラム名が重複しているエラー

2022-02-12 05:26:24

質問

膨大な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セクションのカラム名を変更してトラブルシュートしてみましたが、うまくいきませんでした。

私が読んだ1つの解決策は、DISTINCTを削除することでしたが、それは役に立ちませんでした。

重複した列のエラーはどこから来るのか、どうしてもわかりません。 データベースの整合性に問題があるのでしょうか?

よろしくお願いします。

解決方法は?

あなたの ProfileFriendList テーブルには、どちらも ID カラムを使用します。というのは、あなたが select * という名前の2つのカラムが生成されます。 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