Поиск дублей без группировки?

D
На сайте с 28.06.2008
Offline
1101
424

Нужно в таблице content найти дубли по полю title и вывести ID этих дублей.

В идеале так:

1,17,5;

2,14;

55,89,13,74;

......

Так можно?

IL
На сайте с 20.04.2007
Offline
435
#1

SELECT title, count(id) as cnt 
FROM content
GROUP BY title
HAVING count(id)>1 ORDER by 2 DESC

Выведет Title-ы с двумя и более количествами.

А что-то вроде этого выведет ID и Title записей с дублирующимися Title

SELECT id, title FROM content WHERE title IN (
SELECT title FROM `content`
GROUP BY title
HAVING count(id) > 1)
ORDER BY title
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
D
На сайте с 28.06.2008
Offline
1101
#2

Не может мускуль переварить запрос, зависает, в базе всего 2500 записей.

Решил попробовать на пхп но че то завис, не мойму как элементы массива сравнивать.

$db->setQuery("SELECT id,title FROM `content`");
$result = $db->loadObjectlist();

foreach ($result as $item){
var_dump($item->title);
}

Мне нужно сравнить title и если они одинаковые высети их как то отельно, в отдельный массив.

например было

1 Вася

2 Петя

3 Игорь

4 Вася

5 Артем

6 Петя

сделать

array1 {

1 Вася

4 Вася

}

array2 {

2 Петя

6 Петя

}

array3 {

3 Игорь

}

array4 {

5 Артем

}

edogs software
На сайте с 15.12.2005
Offline
775
#3
Dram:
Нужно в таблице content найти дубли по полю title и вывести ID этих дублей.
В идеале так:

1,17,5;
2,14;
55,89,13,74;
......

Так можно?

Что-то типа

select title, group_concat ( id separator ',' ) from content group by title having count(*)>1

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
D
На сайте с 28.06.2008
Offline
1101
#4

edogs, #1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MariaDB на предмет корректного синтаксиса около 'separator ',' )

owx
На сайте с 27.06.2009
Offline
100
owx
#5
Dram:
Не может мускуль переварить запрос, зависает, в базе всего 2500 записей.
Решил попробовать на пхп но че то завис, не мойму как элементы массива сравнивать.



Мне нужно сравнить title и если они одинаковые высети их как то отельно, в отдельный массив.

например было
1 Вася
2 Петя
3 Игорь
4 Вася
5 Артем
6 Петя

сделать
array1 {
1 Вася
4 Вася
}
array2 {
2 Петя
6 Петя
}
array3 {
3 Игорь
}
array4 {
5 Артем
}

http://sandbox.onlinephpfunctions.com/code/53e34f26e15986902ed231248c46106a4bbde0f9

D
На сайте с 28.06.2008
Offline
1101
#6

~AL~, что-то не получается переделать ваш код под мой массив, он у меня так выглядит


array(2852) {
[0]=>
object(stdClass)#307 (2) {
["id"]=>
string(1) "1"
["title"]=>
string(86) "вася"
}
[1]=>
object(stdClass)#308 (2) {
["id"]=>
string(1) "2"
["title"]=>
string(91) "вася"
}
[2]=>
object(stdClass)#309 (2) {
["id"]=>
string(1) "3"
["title"]=>
string(98) "Петя"
}
[3]=>
object(stdClass)#310 (2) {
["id"]=>
string(1) "4"
["title"]=>
string(90) "Петя"
}
owx
На сайте с 27.06.2009
Offline
100
owx
#7
Dram:
~AL~, что-то не получается переделать ваш код под мой массив, он у меня так выглядит


$db->setQuery("SELECT id,title FROM `content`");
$result = $db->loadObjectlist();

$duplicates = [];

foreach ($result as $item) {
$duplicates[$item->title][$item->id] = $item->title;
}

Наверное так

D
На сайте с 28.06.2008
Offline
1101
#8

То что нужно СПАСИБО!

edogs software
На сайте с 15.12.2005
Offline
775
#9
Dram:
edogs, #1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MariaDB на предмет корректного синтаксиса около 'separator ',' )

group_concat - после него пробел не надо.

D
На сайте с 28.06.2008
Offline
1101
#10
edogs:
group_concat - после него пробел не надо.

Идеальное решение, спасибо!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий