Dram

Рейтинг
1115
Регистрация
28.06.2008

Очевидные дубли я удалил теперь перешел к более сложным.

запросом

SELECT * FROM `xyfq1_items`
WHERE (
fullname
)
IN (
SELECT fullname
FROM `xyfq1_items`
GROUP BY fullname
HAVING COUNT( fullname ) > 1
)
and LENGTH (firstname) > 2
ORDER BY fullname

Я нашел 12068 дублей. Начал дбавлять проверки, чтобы отсеять менее важных из пары.

В итоге дошел до такого запроса

SELECT * FROM `xyfq1_items`
WHERE (
fullname
)
IN
(
SELECT fullname
FROM `xyfq1_items`
GROUP BY fullname
HAVING COUNT( fullname ) > 1
)
and LENGTH (firstname) > 2
and comments = 0
and experience = 0
and LENGTH (photo) < 1
ORDER BY fullname

Он выдал мне 7082 почти половина. Осталось добавить последнию проверку по полю hits - взять из пары ту записать у которой hits меньше.

И вот тут я застрял. Куда бы я не вставлял min (hits) - мускуль ругается на синтаксис.

Помогите плиз дожать запрос?

В общем сделал не временную таблицу а обычную

CREATE TABLE `t_temp`

потом сделал у нее первичный ключ по ID и только тогда зпрос ну удаление прошел

Найдено 3 ошибок при анализе.

Ожидалась открывающая скобка. (near "as" at position 32)

Ожидалось объявление, по крайней мере, одного столбца. (near " " at position 31)

Неожиданный токен. (near ")" at position 250)

SQL запрос: Документация

CREATE TEMPORARY TABLE `t_temp` as ( SELECT * FROM `xyfq1_items` WHERE ( fullname, section_id ) IN ( SELECT fullname, section_id FROM `xyfq1_items` GROUP BY fullname, section_id HAVING COUNT( fullname ) > 1 ) and hits = 0 )

Ответ MySQL: Документация

#1205 - Таймаут ожидания блокировки истек; попробуйте перезапустить транзакцию

Пробую через временную, но где то ошибаюсь в синтаксисе... помогите плиз

CREATE TEMPORARY TABLE `t_temp` as (
SELECT * FROM `xyfq1_items`
WHERE (
fullname, section_id
)
IN (
SELECT fullname, section_id
FROM `xyfq1_items`
GROUP BY fullname, section_id
HAVING COUNT( fullname ) > 1
)
and hits = 0
);

DELETE FROM xyfq1_items
WHERE id IN (SELECT * FROM t_temp);

База ругается - #1241 - Операнд должен содержать 1 колонок

Вижу что нужно добавить подзапрос SELECT * FROM и какое то AS p но не пойму в какое место это присобачить на моем примере

Так?



WHERE `id` IN
SELECT * FROM (
(
SELECT `id` FROM `xyfq1_items`
WHERE (fullname, section_id)
IN
(
SELECT fullname, section_id
FROM `xyfq1_items`
GROUP BY fullname, section_id
HAVING COUNT( fullname ) > 1
)
) AND
`hits` = 0;
) AS p

dma84, #1093 - Table 'xyfq1_items' is specified twice, both as a target for 'DELETE' and as a separate source for data

а как правильно через временную?

Ни одна ссылка не открылась, о чем там речь то - ГДЗ что-ли?

edogs:
А 1998 и 2008 мимо прошли?

1998 я был студент и немного пьян, а в 2008 еще не было накоплений, за которые можно было переживать

Мда... посмотрел прослезился :)))

юни:
Не могу без слёз смотреть на курс. Да держу все в рублях, не смейтесь.

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

С тех пор весь доход только в евро и доллары.

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

Всего: 6928