|
|
|
INSERT INTO IF NOT EXIST
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, мне нужно вставить все значения строк (name, score) из другой таблицы, но как не вставлять строку(или лучше апдейт делать), если значение в колонке name уже есть в вставляемой таблице? Тоесть дублирование. Вот мои докопы: INSERT INTO scoreperdays (name,day1) VALUES (SELECT name, score FROM scores where scoreperdays.name <> scores.name) Версия Mysql 5.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2010, 16:43 |
|
||
|
INSERT INTO IF NOT EXIST
|
|||
|---|---|---|---|
|
#18+
Поставить на поле уникальный индекс, или primary ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2010, 17:03 |
|
||
|
INSERT INTO IF NOT EXIST
|
|||
|---|---|---|---|
|
#18+
Только запрос скорее будет выглядеть так: INSERT IGNORE INTO scoreperdays (name,day1) VALUES (SELECT name, score FROM scores where scoreperdays.name <> scores.name) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2010, 17:04 |
|
||
|
INSERT INTO IF NOT EXIST
|
|||
|---|---|---|---|
|
#18+
Hett, Или же INSERT ... ON DUPLICATE KEY UPDATE если не желательно, чтобы из-за IGNORE в варнинги превращались и другие ошибки (если таковые возможны) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2010, 17:16 |
|
||
|
INSERT INTO IF NOT EXIST
|
|||
|---|---|---|---|
|
#18+
Edd.Dragon, Пожалуй зависит от частного случая, но если записи полностью одинаковые, то IGNORE будет быстрее. А ошибок там никаких не генерируется вроде как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2010, 18:08 |
|
||
|
INSERT INTO IF NOT EXIST
|
|||
|---|---|---|---|
|
#18+
Hett, Ну правильно, ошибки как варнинги идут. И недопустимые значения конвертятся к ближашим допустимым. Т.е. при игноре можно например вставлять нул в "NOT NULL"-столбец. Так была ошибка, а так получим (если это число) вставку нолика без проблем. Т.е. если при синхронизации важно отлавливать вот такие некорректности данных (откуда нулл взялся там, где есго быть не должно?), тогда игнор не катит. А если важна макс. скорость, а корректность данных гарантируется, тогда конечно игнор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2010, 18:26 |
|
||
|
INSERT INTO IF NOT EXIST
|
|||
|---|---|---|---|
|
#18+
Edd.Dragon, >> И недопустимые значения конвертятся к ближашим допустимым. Я советую отключить нафиг все прослабления: SET @@global.sql_mode = “STRICT_ALL_TABLES”; Незамеченая ошибка в загруженых данных -- ето плохо. В редких случаях ето допустимо: -- надо загрузить все даные бытро и чистить уже в базе (при включеном стрикт моде). -- Или кривой фреймворк ставит нот нул в свои таблицы а потом сам записывает нул туда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2010, 20:20 |
|
||
|
INSERT INTO IF NOT EXIST
|
|||
|---|---|---|---|
|
#18+
У меня только может дубликат быть в колонке name Причем запрос INSERT IGNORE INTO scoreperdays (name,day1) VALUES (SELECT name, score FROM scores where scoreperdays.name <> scores.name) отдает ошибку синтаксиса. А вот как юзать "ON DUPLICATE KEY UPDATE" не очень понял - ведь у меня будут разные же индексы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2010, 22:23 |
|
||
|
INSERT INTO IF NOT EXIST
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. Ну естественно. Код: plaintext Конечно смотря сколько данных в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2010, 02:27 |
|
||
|
INSERT INTO IF NOT EXIST
|
|||
|---|---|---|---|
|
#18+
RwC_LongManПричем запрос INSERT IGNORE INTO scoreperdays (name,day1) VALUES (SELECT name, score FROM scores where scoreperdays.name <> scores.name) отдает ошибку синтаксиса. Поставь себя на его место и попытайся выполнить Код: plaintext RwC_LongManА вот как юзать "ON DUPLICATE KEY UPDATE" не очень понял - ведь у меня будут разные же индексы. Так мануал надо читать если не понятно INSET ....... ON DUPLICATE KEY UPDATE Вставляем новую строку. Если нарываемся на уже существующий такой ключ, то тогда апдейтим уже существующую строку. В твоем случае в апдейте можно поставить `name` = `name` (т.е. ничего не менять). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2010, 04:39 |
|
||
|
INSERT INTO IF NOT EXIST
|
|||
|---|---|---|---|
|
#18+
Блин Вот так: авторПоставь себя на его место и попытайся выполнить авторSELECT name, score FROM scores where scoreperdays.name <> scores .name ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2010, 04:42 |
|
||
|
INSERT INTO IF NOT EXIST
|
|||
|---|---|---|---|
|
#18+
RwC_LongMan, Кстати, а что это у тебя кодировка таблиц дефолтная (шведская латиница)? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2010, 04:43 |
|
||
|
INSERT INTO IF NOT EXIST
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Можно еще кое о чем спросить? Если что мб закроют тему... Мне нужно теперь узнать это: max(col1, col2) -> конечно синтаксис.. но плз) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2010, 13:32 |
|
||
|
INSERT INTO IF NOT EXIST
|
|||
|---|---|---|---|
|
#18+
Спасибо, век не забуду :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2010, 16:20 |
|
||
|
INSERT INTO IF NOT EXIST
|
|||
|---|---|---|---|
|
#18+
всем привет! а вот такой вопрос: таблица с полем автоиндекса (id) и полем с текстом (text) ("+" полнотекстовая индексация по полю text) надо добавлять данные которых нет в поле text как сделать, ума не приложу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2016, 16:43 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39307222&tid=1831421]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
175ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 466ms |

| 0 / 0 |
