powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как в таблице найти пропущенные строки
19 сообщений из 19, страница 1 из 1
Как в таблице найти пропущенные строки
    #39232634
Craftsman1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Подскажите как сделать следующее:
Есть таблица t1:

ID пользователя:
...
6040
6042
6045
...
и т.д.

Другие столбцы в таблице (еще 7 штук) с данными пользователей.
Как найти пользователей (по ID), которые пропущены (т.е. с 6041, 6043, 6044 в примере выше).

Попробовал создать новую таблицу (t1_copy) с значениями заполненными по порядку:
...
6040
6041
6042
6044
6044
6045
...
и т.д.

После этого к созданной таблице присоединить таблицу выше вот так:

SELECT t1_copy.ID, t1.ID
FROM t1_copy
LEFT JOIN t1 ON t1_copy.ID = t1.ID where ID is null;

Запустил на выполнение и ждал целый день (где-то часов 12), но так и не смог дождаться выполнения. В таблице около 1.3 мл строк. Можете подсказать какие еще есть варианты как найти пропущенных пользователей? Спасибо
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39232697
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FROM T TT
LEFT JOIN T TTT
ON TT.ID = TTT.ID-1
WHERE TTT.ID IS NULL
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39232906
SELECT t1_copy.ID, t1.ID
FROM t1_copy
LEFT JOIN t1 ON t1_copy.ID = t1.ID where t1.ID is null;

Индексы по полю ID есть в обеих таблицах? Если всё-равно будет долго, то попробуйте по частям (LIMIT 0, 1000).
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39232935
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Громыхатель,

если по полю ID нет индекса, то с вероятностью 99% это диагноз.

ЗЫ. в каких ещё "обеих таблицах"??
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39232937
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirЗЫ. в каких ещё "обеих таблицах"??а, ну да
как-то привык, что таблицы с последовательностями создаются на лету :)
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39233155
Craftsman1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaFROM T TT
LEFT JOIN T TTT
ON TT.ID = TTT.ID-1
WHERE TTT.ID IS NULL

Подскажите что значит "FROM T TT". Т.е получается берем из двух таблиц "Т" и "ТТ" и присоединяем в к третей "ТТТ" правильно? Либо "ТТТ" это опечатка?
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39233158
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Craftsman1,

ТТ и ТТТ - псевдонимы таблицы Т.
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39233244
Craftsman1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaFROM T TT
LEFT JOIN T TTT
ON TT.ID = TTT.ID-1
WHERE TTT.ID IS NULL

Так че-то не работает. You have an error in your SQL syntax.
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39233252
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Craftsman1,

Покажите полностью выполняемый запрос и полностью сообщение об ошибке.
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39233260
Craftsman1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftCraftsman1,

Покажите полностью выполняемый запрос и полностью сообщение об ошибке.

Я прямо так и выполняю:
AkinaFROM T TT
LEFT JOIN T TTT
ON TT.ID = TTT.ID-1
WHERE TTT.ID IS NULL

Поменял только название таблицы на "T"

Получается это:

[SQL]FROM T TT
LEFT JOIN T TTT
ON TT.ID = TTT.ID-1
WHERE TTT.ID IS NULL

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM T TT
LEFT JOIN T TTT
ON TT.ID = TTT.ID-1
WHERE TTT.ID IS NULL' at line 1
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39233358
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Craftsman1Я прямо так и выполняю:Ну это же заготовка, а не готовый запрос!
Еще секцию SELECT нужно в начале написать.
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39233838
Craftsman1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftCraftsman1Я прямо так и выполняю:Ну это же заготовка, а не готовый запрос!
Еще секцию SELECT нужно в начале написать.
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39233844
Craftsman1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftCraftsman1Я прямо так и выполняю:Ну это же заготовка, а не готовый запрос!
Еще секцию SELECT нужно в начале написать.

При таком запросе:

SELECT t1_copy.ID, t1.ID_idealprice
FROM t1_copy
LEFT JOIN t1
ON t1_copy.ID = t1.ID_idealprice


должен выводить в левую таблицу все строки из таблицы t1_copy, а в правую только значения из таблицы t1. В итоге должно получится по идее:

6040 6040
6041 NULL
6042 6042
6044 NULL
6044 NULL
6045 6045

А получается что он строки где должно быть NULL просто пропускает и получается:

6040 6040
6042 6042
6045 6045

Можете подсказать в чем проблема?
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39233877
Craftsman1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Везде написано:
LEFT JOIN
Возвращаются все данные из «левой» таблицы, даже если не найдено соответствий в «правой» таблице («левая» таблица в SQL-запросе стоит левее знака равно, «правая» — правее).

У меня почему-то не возвращает из левой таблицы все данные, а только те в которых были найдены соответствия.
Может в MySQL 5.7 что-то поменялось?
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39233884
Craftsman1,

А если добавить Order BY t1_copy.ID ?
Или WHERE t1_copy.ID = 6041 ?
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39233936
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39234370
Craftsman1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ГромыхательCraftsman1,

А если добавить Order BY t1_copy.ID ?
Или WHERE t1_copy.ID = 6041 ?

Если добавляю все эти "уточнения", то запрос выполняется нереально долго. Даже если добавить ограничение LIMIT 0, 5 то все равно не помогает. Я так предполагаю он начинает просматривать (индексировать) все строки в столбце, в котором 1.5 мл строк. Еще не разу не смог дождаться окончания выполнения такого запроса.
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39234414
Craftsman1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можете кто-нибудь помочь написать запрос. Таблицы скачать можно тут . Нужно в таблице t1 в столбце ID_moi найти пропущенные значения. Для этого создал таблицу t1_copy в которой есть столбец ID_moi со всеми значениями по порядку. В таблице 1.5 мл строк и в будущем будет еще больше. Можно ли написать запрос так чтобы выполнялся не больше 1-2 часов?
...
Рейтинг: 0 / 0
Как в таблице найти пропущенные строки
    #39234679
[quot Craftsman1]ГромыхательЕсли добавляю все эти "уточнения", то запрос выполняется нереально долго. Даже если добавить ограничение LIMIT 0, 5 то все равно не помогает. Я так предполагаю он начинает просматривать (индексировать) все строки в столбце, в котором 1.5 мл строк.
Вас же спрашивали о наличии индексов... Покажите EXPLAIN такого долгого запроса.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как в таблице найти пропущенные строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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