Это выберет дубликаты в одном проходе таблицы, не будет подзапросов.
SELECT *
FROM (
SELECT ao.*, (@r := @r + 1) AS rn
FROM (
SELECT @_address := 'N'
) vars,
(
SELECT *
FROM
list a
ORDER BY
address, id
) ao
WHERE CASE WHEN @_address <> address THEN @r := 0 ELSE 0 END IS NOT NULL
AND (@_address := address ) IS NOT NULL
) aoo
WHERE rn > 1
Этот запрос активирует действие ROW_NUMBER()
, присутствующее в Oracle
и SQL Server
См. статью в моем блоге для деталей:
MySQL
. Надеюсь, это то, что вы ищете.
У меня была такая же проблема. Не очевидно, как это можно сделать без Visual Studio, но мы начнем ... На вашем сервере TFS 2010: