powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / INSERT INTO IF NOT EXIST
17 сообщений из 17, страница 1 из 1
INSERT INTO IF NOT EXIST
    #36968325
RwC_LongMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, мне нужно вставить все значения строк (name, score) из другой таблицы, но как не вставлять строку(или лучше апдейт делать), если значение в колонке name уже есть в вставляемой таблице? Тоесть дублирование.

Вот мои докопы:

INSERT INTO scoreperdays (name,day1) VALUES (SELECT name, score FROM scores where scoreperdays.name <> scores.name)

Версия Mysql 5.0
...
Рейтинг: 0 / 0
INSERT INTO IF NOT EXIST
    #36968334
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поставить на поле уникальный индекс, или primary
...
Рейтинг: 0 / 0
INSERT INTO IF NOT EXIST
    #36968337
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только запрос скорее будет выглядеть так:

INSERT IGNORE INTO scoreperdays (name,day1) VALUES (SELECT name, score FROM scores where scoreperdays.name <> scores.name)
...
Рейтинг: 0 / 0
INSERT INTO IF NOT EXIST
    #36968347
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

Или же INSERT ... ON DUPLICATE KEY UPDATE
если не желательно, чтобы из-за IGNORE в варнинги превращались и другие ошибки (если таковые возможны)
...
Рейтинг: 0 / 0
INSERT INTO IF NOT EXIST
    #36968377
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon,

Пожалуй зависит от частного случая, но если записи полностью одинаковые, то IGNORE будет быстрее. А ошибок там никаких не генерируется вроде как.
...
Рейтинг: 0 / 0
INSERT INTO IF NOT EXIST
    #36968390
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

Ну правильно, ошибки как варнинги идут. И недопустимые значения конвертятся к ближашим допустимым. Т.е. при игноре можно например вставлять нул в "NOT NULL"-столбец. Так была ошибка, а так получим (если это число) вставку нолика без проблем. Т.е. если при синхронизации важно отлавливать вот такие некорректности данных (откуда нулл взялся там, где есго быть не должно?), тогда игнор не катит. А если важна макс. скорость, а корректность данных гарантируется, тогда конечно игнор.
...
Рейтинг: 0 / 0
INSERT INTO IF NOT EXIST
    #36968482
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon,

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

Я советую отключить нафиг все прослабления:

SET @@global.sql_mode = “STRICT_ALL_TABLES”;

Незамеченая ошибка в загруженых данных -- ето плохо.

В редких случаях ето допустимо:

-- надо загрузить все даные бытро и чистить уже в базе
(при включеном стрикт моде).

-- Или кривой фреймворк ставит нот нул в свои таблицы
а потом сам записывает нул туда.
...
Рейтинг: 0 / 0
INSERT INTO IF NOT EXIST
    #36968621
RwC_LongMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня только может дубликат быть в колонке name



Причем запрос
INSERT IGNORE INTO scoreperdays (name,day1) VALUES (SELECT name, score FROM scores where scoreperdays.name <> scores.name)

отдает ошибку синтаксиса.


А вот как юзать "ON DUPLICATE KEY UPDATE" не очень понял - ведь у меня будут разные же индексы.
...
Рейтинг: 0 / 0
INSERT INTO IF NOT EXIST
    #36968819
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
Причем запрос 
INSERT IGNORE INTO scoreperdays (name,day1) VALUES (SELECT name, score FROM scores where scoreperdays.name <> scores.name)

Ну естественно.


Код: plaintext
INSERT IGNORE INTO scoreperdays (name,day1) VALUES (SELECT name, score FROM scores)

Конечно смотря сколько данных в таблице.
...
Рейтинг: 0 / 0
INSERT INTO IF NOT EXIST
    #36968846
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RwC_LongManПричем запрос
INSERT IGNORE INTO scoreperdays (name,day1) VALUES (SELECT name, score FROM scores where scoreperdays.name <> scores.name)

отдает ошибку синтаксиса.

Поставь себя на его место и попытайся выполнить
Код: plaintext
SELECT name, score FROM scores where [color=red]scoreperdays[/color].name <> scores.name

RwC_LongManА вот как юзать "ON DUPLICATE KEY UPDATE" не очень понял - ведь у меня будут разные же индексы.
Так мануал надо читать если не понятно

INSET ....... ON DUPLICATE KEY UPDATE

Вставляем новую строку. Если нарываемся на уже существующий такой ключ, то тогда апдейтим уже существующую строку. В твоем случае в апдейте можно поставить `name` = `name` (т.е. ничего не менять).
...
Рейтинг: 0 / 0
INSERT INTO IF NOT EXIST
    #36968847
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин

Вот так:
авторПоставь себя на его место и попытайся выполнить
авторSELECT name, score FROM scores where scoreperdays.name <> scores .name
...
Рейтинг: 0 / 0
INSERT INTO IF NOT EXIST
    #36968849
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RwC_LongMan,

Кстати, а что это у тебя кодировка таблиц дефолтная (шведская латиница)? )))
...
Рейтинг: 0 / 0
INSERT INTO IF NOT EXIST
    #36969570
RwC_LongMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
INSERT INTO scoreperdays(scoreperdays.name,day1) SELECT scores.name, score FROM scores ON DUPLICATE KEY UPDATE scoreperdays.name=scores.name



Можно еще кое о чем спросить? Если что мб закроют тему...

Мне нужно теперь узнать это:

max(col1, col2) -> конечно синтаксис.. но плз)
...
Рейтинг: 0 / 0
INSERT INTO IF NOT EXIST
    #36969605
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RwC_LongManМне нужно теперь узнать это:

max(col1, col2) -> конечно синтаксис.. но плз) GREATEST()
...
Рейтинг: 0 / 0
INSERT INTO IF NOT EXIST
    #36970099
RwC_LongMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, век не забуду :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
INSERT INTO IF NOT EXIST
    #39307222
woojin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем привет!
а вот такой вопрос:
таблица с полем автоиндекса (id) и полем с текстом (text) ("+" полнотекстовая индексация по полю text)
надо добавлять данные которых нет в поле text

как сделать, ума не приложу?
...
Рейтинг: 0 / 0
INSERT INTO IF NOT EXIST
    #39307230
woojin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как можно сделать нечто подобное
Код: sql
1.
2.
3.
INSERT INTO ids (text)
SELECT * FROM (SELECT 'str1', 'str2', 'str3') AS tmp 
  WHERE NOT EXISTS
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / INSERT INTO IF NOT EXIST
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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