У меня есть следующий SQL-запрос. В этом запросе я присоединяюсь к таблице tblTestImport с запросом доступа с именем «unique». Я пытаюсь интегрировать запрос «уникальный» в приведенный ниже код. Мне не повезло, пожалуйста, помогите.
DELETE tblTestImport.ID
FROM tblTestImport
WHERE tblTestImport.[ID]
in (SELECT tblTestImport.ID
FROM tblTestImport
LEFT JOIN **[unique]**
ON tblTestImport.ID = **unique.**LastOfID
WHERE (((**unique.**LastOfID) Is Null)));
Код для "уникального" запроса
SELECT Last(tblTestImport.ID) AS LastOfID
FROM tblTestImport
GROUP BY tblTestImport.Url, tblTestImport.Kms, tblTestImport.Price, tblTestImport.Time;
Дополнительная информация: я пытаюсь удалить дубликаты из таблицы доступа и оставить только уникальные. tblTestImport имеет повторяющиеся записи. «Уникальный» запрос отображает уникальные записи. Затем я присоединяюсь к таблице tblTestImport с «уникальным» запросом, чтобы определить, какие уникальные записи не существуют в tblTestImport. Это дает мне список дубликатов, который я хочу удалить.
В большом фрагменте кода у меня есть [unique], который я хотел бы заменить небольшим фрагментом кода ниже.
отредактирован, чтобы включить больше деталей. Спасибо


Ваш запрос не вернет результатов, если предположить, что id никогда не является NULL.
Почему? Что ж, unique.lastOfId - это всегда действительный идентификатор в tblTestImport. Таким образом, LEFT JOIN всегда будет соответствовать, а lastOfId никогда не будет NULL.
Итак, в подзапросе нет строк.
Я предлагаю вам задать другой вопрос. Объясните, что вы хотите сделать, и предоставьте образцы данных и желаемые результаты.
Трудно сказать, что именно вам нужно, исходя из текущей настройки вашего вопроса. Однако это может быть то, что вы ищете:
DELETE tblTestImport.ID
FROM tblTestImport
WHERE tblTestImport.[ID] IN
(SELECT tblTestImport.ID
FROM tblTestImport
LEFT JOIN [unique] ON tblTestImport.ID = unique.LastOfID
WHERE unique.LastOfID Is Null
AND tblTestImport.ID IN (
SELECT Last(tblTestImport.ID) AS LastOfID
FROM tblTestImport
GROUP BY tblTestImport.Url, tblTestImport.Kms, tblTestImport.Price, tblTestImport.Time)
)
(Это простой вложенный запрос в предыдущем запросе, но все будет зависеть от взаимосвязи самих данных. Этот запрос предполагает, что они связаны в одном поле tblTestImport.ID)
Попробуйте следующее, не проверено:
DELETE FROM tblTestImport
WHERE ID <> (SELECT Min(ID) AS MinOfID FROM tblTestImport AS Dupe
WHERE (Dupe.Url= tblTestImport.Url)
AND (Dupe.Kms= tblTestImport.Kms)
AND (Dupe.Price= tblTestImport.Price)
AND (Dupe.Time= tblTestImport.Time));
Решение на основе следующего http://allenbrowne.com/subquery-01.html
Примеры данных и желаемые результаты действительно помогут.