Подтвердить что ты не робот

Ошибка дублирования столбца SQL Duplicate

Я пытаюсь найти ошибку в массивном 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 без везения.

Одним из решений, которое я прочитал, было удаление DISTINCT, но это не помогло.

Я просто не вижу, откуда может произойти ошибка повторяющегося столбца. Может быть проблема с целостностью базы данных?

Любая помощь очень ценится.

4b9b3361

Ответ 1

В таблицах Profile и FriendList есть столбец ID. Поскольку вы говорите select *, вы получаете два столбца с именем ID в подвыборке, который с псевдонимом Profiles, а SQL не знает, к какому Profiles.ID относится (обратите внимание, что Profiles здесь ссылается на псевдоним подзапроса, а не на таблицу с тем же именем).

Поскольку вам нужен только столбец идентификатора, вы можете изменить его на это:

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

Ответ 2

Замените "select *" на "select col1, col2...", и ошибка должна стать очевидной (т.е. несколько столбцов с именем "ID" ). Ничего общего с целостностью или целостностью базы данных.

Ответ 3

у вас есть таблица под названием "Профили", и вы "создаете" временную таблицу "Профили" в своем "От", это было бы моим предположением о том, что вызывает проблему. вызовите свои бананы temp и попробуйте SELECT DISTINCT bananas.ID FROM и посмотрите, работает ли это

Ответ 4

Как говорится в ошибке, каждая из таблиц, с которыми вы соединяетесь, имеет столбец с именем ID. Вам нужно указать, в каком столбце ID вы хотите (Profiles.ID или FriendList.ID), или включить ID в условия соединения.

Ответ 5

В профилях и FriendList есть столбец идентификатора. Вы запрашиваете полное соединение "Профили", а затем используете Profiles.ID, но SQL не знает, какой идентификатор вы имеете в виду.