powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / поиск дублей без группировки
9 сообщений из 9, страница 1 из 1
поиск дублей без группировки
    #38642860
sunshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть таблица table, в ней - text, id и пр.

table
id text
1 красный
2 желтый
3 зеленый
4 зеленый
5 желтый

если использовать
SELECT *, COUNT(*) AS `cnt` FROM `table` GROUP BY `text`
то результатом будет

id text cnt
1 красный (1)
2 желтый (2)
3 зеленый (2)

нужно, чтобы выводились все строки + cnt:
id text cnt
1 красный (1)
2 желтый (2)
3 зеленый (2)
4 зеленый (2)
5 желтый (2)

подскажите, пожалуйста, как это реализовать?
...
Рейтинг: 0 / 0
поиск дублей без группировки
    #38642978
sunshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
поиск дублей без группировки
    #38644166
sunshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как оказалось, вопрос не совсем снят

при внедрении запроса в php значение cnt не передается...
подскажите, пожалуйста,
1. как составить запрос, чтобы в конечный результат попало значение cnt из внутреннего запроса,
2. в результат выводится поле text дважды - как избежать этого?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT * FROM  `table` t1
JOIN ( 
SELECT COUNT( `text` )  AS  `cnt` 
FROM  `table` t2
GROUP BY  `text` 
HAVING  `cnt` >0
) t1 
ON t1.`text`=t2.`text`  
...
Рейтинг: 0 / 0
поиск дублей без группировки
    #38644195
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
SELECT *,
  (SELECT COUNT(*)
   FROM  `table` t2
   WHERE t2.`text`=t1.`text`
  ) AS `cnt` 
FROM `table` t1;
...
Рейтинг: 0 / 0
поиск дублей без группировки
    #38644224
sunshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007,

спасибо-спасибо-спасибо!!!!!!! :)
...
Рейтинг: 0 / 0
поиск дублей без группировки
    #38651619
sunshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, как встроить второй приведенные ниже запрос в первый, чтобы все значения массива можно было использовать в дальнейшем.

Запрос из table1 (это основной запрос, * содержит порядка 60 полей: id, title, text1 и т.д.).

Код: sql
1.
2.
3.
4.
5.
select *, 
(select count(*) from `table_1` t3 
where t4.`title`=t3.`title`) as `cnt1` 
from `table_1` t4  
where ...



Запрос из table (2 поля: id, text).
Код: sql
1.
2.
3.
4.
SELECT *, 
(select count(*) from `table` t2 
where t2.`text`=t1.`text`) as `cnt` 
from `table` t1;



Общее поле для обеих таблиц - id.
Код: sql
1.
where table_1.id = table.id
...
Рейтинг: 0 / 0
поиск дублей без группировки
    #38652294
sunshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кажется получилось...
Код: sql
1.
2.
3.
4.
5.
SELECT t3 . * , t1 . * , 
(SELECT COUNT( * ) FROM  `table` t2 WHERE t2.`text` = t1.`text`) AS  `cnt` , 
(SELECT COUNT( * ) FROM  `table1` t4 WHERE t3.`title` = t4.`title`) AS  `cnt1`  
FROM  `table` t1,  `table1` t3
WHERE t3.`id` = t1.`id` 
...
Рейтинг: 0 / 0
поиск дублей без группировки
    #38652378
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возможно быстрее будет, делать два запроса

одним получить число дублей, другим выборку что надо, и уже ..я так полагаю на пхп/питоне/ноудджиес клеить величину.
или джоинами делать, но не корелироваными подзапросами.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#instead
select t.*, (select count(*) from table where id = t.id)

from table t


#do
select t.*, c.`total`
FROM
table t
JOIN
(
select id,count(*) as 'total' from table group by id
) c on (c.id = t.id)
...
Рейтинг: 0 / 0
поиск дублей без группировки
    #38657705
sunshi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex564657498765453,

спасибо, но я такой спец, что ваш запрос для меня, как речь на хинди :)) => для меня это не реализуемо... к тому же, как я понимаю, JOIN не даст переменную для использования...
скорость не очень важна. пару секунд подождать не проблема.

можно ли в запросе
Код: sql
1.
(SELECT COUNT( * ) FROM  `table1` t4 WHERE t3.`title` = t4.`title`) AS  `cnt1` 


вместо "=" использовать "like" для поиска вхождения в строке?
т.е. при t4.title = "Петербургские повести" и t3.title = "Петербургские повести. Рассказы" в count попадали обе строки, а не точное вхождение?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / поиск дублей без группировки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]