Общие > Базы данных
Проблема с mysql
listopad:
Добрый день.
Есть такая проблема, люди , кто может посоветуйте пожалуйста.!
Есть таблица клиетнов с СТОЛЬЦАМИ
ID -NAME- ADRES-MAIL-OTHER-
МНОГО ЗАПИСЕЙ ГДЕ MAIL ОДИН И ТОТ ЖЕ . Т. Е БОНАЛЬНЫЕ ПОВТОРЫ.
НЕОБХОДИМО СДЕЛАТЬ ТАК, ЧТОБЫ ИЗ ЭТОЙ ТАБЛИЦЫ СДЕЛАТЬ ТОЧНО ТАКУЮ ЖЕ НО ЧТОБЫ MAIL НЕ ПОВТОРЯЛСЯ ! Т. Е ВСЕ ЗАПИСИ ГДЕ МЫЛО ПОВТОРЯЕТЬСЯ БОЛЬШЕ 1 РАЗА , ПРОСТО ВЗЯТЬ И УДАЛИТЬ .!!!
Я ЗНАЮ ТОЛЬКО ТАК
CREATE TABLE people_new SELECT DISTINCT mail FROM people
НО В ЭТОМ СЛУЧАЕ СОЗДАЕТЬСЯ ТАБЛИЦА ТОЛЬКО С СТОЛБЦОМ mail , А мне еще нужны и данные из остальных столбцов !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Если делаю вот так
CREATE TABLE people_new SELECT DISTINCT id,mail FROM people
-- Но id уникальны, а ,соответственно, mail повторяются с повторами !!!!
Очень благодарен !!!
commander:
а приложение простенькое или функцию написать слабо?
Phoinix:
listopad
Читаем в мануале что DISTINCT выбирает уникальные поля
соответсвенно:
--- Цитировать ----- Но id уникальны, а ,соответственно, mail повторяются с повторами !!!!
--- Конец цитаты ---
Что и следовало ожидать
А есть такая функция как GROUP BY, и если мы сделаем так:
CREATE TABLE people_new SELECT id, mail FROM people GROUP BY mail
То все будет как положено, только вот id будет подставлятся, первый попавшийся...
DISTINCT - это тот же GROUP BY только для всех выбранных столбцов
listopad:
Огромное спасибо !
Как же я сам не додумался ;)
listopad:
А сейчас проблема еще хуже.
Я сижу на masterhost. У них версия mysql 3.23
Что опять не получается !
Да допустим я создал новую таблицу с неповторяющимися mail.
Спосибо за это -Phoinix .
Имею две таблицы people_new и people.
Теперь пытаюсь как раз найти тех , кто не вошел в новую таблицу
если делать так
SELECT ID FROM people_new, people WHERE people_new.ID != people.ID
--не работает ,т. к. как я понимаю такие запросы работают только в более новых версиях.
Если делаю так
SELECT id, count( * ) AS count
FROM people
GROUP BY email
HAVING count >1
ORDER BY count DESC
Он показывает какие адреса как раз повторяются , но по одному из кажной записи попали в новую таблицу , А мне нужны как раз только те которые не попали вообще , Или не попадут если использовать
CREATE TABLE people_new SELECT id, mail FROM people GROUP BY mail
Навигация
Перейти к полной версии