2012-02-11 2 views
0

Я пытаюсь определить, являются ли последние 15 записей в моей БД дублирующими. Есть ли простой способ сделать это с MySQL или мне нужно перебирать каждый результат и сравнивать его с предыдущим каким-то образом?Как определить повторяющиеся записи в MySQL

My SQL-запрос выглядит следующим образом:

SELECT content FROM `messages` WHERE sender_id = 12345 order by date desc limit 10 

В этом случае результаты выглядят так:

test1 
test1 
test2 
test1 
test1 
test1 
test1 
test2 
test1 
test1 

я ожидал бы видеть 80%, то же самое и в этом случае.

Любые мысли или предложения, как я мог бы легко выполнить это с помощью SQL и PHP?

+0

Каковы ваши намерения? Вы хотите разбить обманы, предотвратить их, посчитать? – mrlee

+0

Мое намерение состоит в том, чтобы указать пользователям, добавляющим 90% дублирующее содержимое. – Paul

ответ

3

Вы могли бы сначала попробовать couting, сколько раз каждый элемент присутствует, используя count() и goup by пункт:

select content, count(content) 
from messages 
WHERE sender_id = 12345 
    -- maybe add a condition on the date, here 
group by content 
having count(content) > 1 

Затем для каждого содержимого, возвращаемого этим запросом, вы хотите что-то сделать (если вы попытаетесь удалить некоторые записи, не удаляйте их все и сохраните первый или последний)

+0

Спасибо, что отлично работает! – Paul

+0

Рад, что я мог помочь; повеселись ! –

0

Вы можете увидеть количество дублей, как это:

select content, count(content) 
from `messages` 
WHERE sender_id = 12345 
group by content 
order by count(content) desc 
0

если количество больше 1, что его дубликат.

SELECT count(content) FROM `messages` WHERE sender_id = 12345 group by content order by date desc limit 10 
Смежные вопросы