powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите дописать запрос
22 сообщений из 22, страница 1 из 1
Помогите дописать запрос
    #39789071
steelballs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Знаю, что вопрос из азов SQL, но я только начинаю познавать тонкости mysql.

Есть таблица table, в которой мне нужно изменить значение поля doc_type на 97. Но сделать это нужно только для тех строк, в которых значение поля doc_type=110. В качестве доп. условия для where я хочу использовать другое поле number.
Соответственно имею такой запрос:

SELECT number FROM table1 where doc_type='110';
UPDATE table1 SET doc_type = '97' where doc_type='110' and number=

Вот как раз с концовкой я и не могу разобраться. Если я вручную впишу туда конкретное значение поля number, то запрос работает.
А как мне сделать запрос таким образом, чтобы список всех значений поля number из select'а использовался в следующем за ним update'е ?
Надеюсь понятно объяснил.
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789077
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
steelballs,

а зачем? если вам нужно изменить все doc_type='110' - то это самодостаточное условие, зачем приплетать ещё что-то?
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789079
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем тебе "доп.условие?
использовался в следующем за ним update'е - совершенно непонятно.
SELECT тебе зачем? Ты же написал, что надо "изменить" по условию.
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789091
steelballs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В таблице значения полей number и doc_type различные. Поэтому мне нужно делать выборку строк, где doc_type=110 и менять это значение на 97.
Select я делаю для добавления доп. параметра в where. Потому как запрос с указанием конкретного значения поля number выполняется успешно.

пробовал такой запрос:

UPDATE table1 SET doc_type = '97' where doc_type='110';

на что выдается ошибка

Cannot insert duplicate key in object 'table1. The duplicate key value is (0, 110, 97)

А если написать

UPDATE table1 SET doc_type = '97' where doc_type='110' and number='129'; - все отлично заменяется.
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789099
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
steelballs
Код: sql
1.
UPDATE table1 SET doc_type = '97' where doc_type='110' and number='129'


; - все отлично заменяется.

Тогда в чем вопрос?
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789106
steelballs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Значений поля number порядка нескольких сотен. И хочется узнать как автоматизировать этот update по замене значения поля doc_type для всех строк со значениями поля number из результатов моего select'а.
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789108
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для doc_type = '97' и where doc_type='110' есть несколько сот строк с разным number ?

+ Пойми значение термина "duplicate key"
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789117
steelballs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, в таблице в поле doc_type сейчас отсутствует значение "97" .
А с термином duplicate key value я разобрался, исключено наличие дублирующихся строк с такими значениями (по причине отсутствия там как такового значения "97").
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789122
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
steelballsНет, в таблице в поле doc_type сейчас отсутствует значение "97" .
А с термином duplicate key value я разобрался, исключено наличие дублирующихся строк с такими значениями (по причине отсутствия там как такового значения "97").

1. Как было ДО выполнения запроса.
2. Странная логика.
3. Так какой primary key на этой таблице?
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789154
steelballs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
До выполнения запроса поле doc_type принимало различные значения, в том числе и "110". Этим значениям соответствуют различные значения поля number.
Например:

number doc_type
1 110
1 120
1 130
12 110
12 120
12 130
129 110
129 120
129 130

Мне моим запросом нужно заменить "110" на "97". Для этого, в качестве вспомогательного параметра, я хочу использовать значения поля number. Ибо "в лоб" заменить "110" на "97" не получается.
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789298
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе надо думать, не какой величины костыль приделать к коду,
а понять истинные причины почему "не получается".
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789301
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
steelballsUPDATE table1 SET doc_type = '97' where doc_type='110' and number='129'; - все отлично заменяется.
Скорее всего у тебя просто не было при number='129' в поле doc_type = '97'
система и позволила тебе провести замену.
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789342
steelballs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, спасибо, нашлось все таки несколько строк со значением поля doc_type=97. Почистил их, и глобальный update выполнился успешно. Странно, что он так трепетно относится к дублирующим строкам. Вопрос на будущее: а нельзя ли прогонять такой update с каким-нибудь режимом IGNORE, чтобы он не обращал внимание на те строки, где это поле уже имеет значение 97?
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789350
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
where doc_type <> '97'
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789353
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не "странно".
Это прямое следствие "primary key "
О чем система тебя и предупреждала через "duplicate key"
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789356
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
steelballsа нельзя ли прогонять такой update с каким-нибудь режимом IGNORE, чтобы он не обращал внимание на те строки, где это поле уже имеет значение 97?А что нужно делать с записями, для которых уже есть запись с doc_type=97? удалить? оставить как есть? что-то ещё?
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789357
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183Это прямое следствие "primary key "Скорее не первичный, а какой-то составной уникальный. Типа (doc_id, doc_type)...
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789361
steelballs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, буду иметь в виду.
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789366
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina982183Это прямое следствие "primary key "Скорее не первичный, а какой-то составной уникальный. Типа (doc_id, doc_type)...
А разве PRIMARY KEY не может быть составным?
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789369
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
steelballsСпасибо, буду иметь в виду.
Да не надо "иметь в виду. надо погуглить.
https://andreyex.ru/bazy-dannyx/uchebnoe-posobie-po-sql/sql-primary-key-pervichnyj-klyuch/
http://dimonchik.com/sql-primary-key.html
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789375
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183А разве PRIMARY KEY не может быть составным?Может. Но в сообщении об ошибке было бы написано, что именно с первичным ключом косяк, тогда как указано просто
steelballsCannot insert duplicate key in object 'table1. The duplicate key value is (0, 110, 97)
Так что там просто составной уникальный индекс из 3 полей.
...
Рейтинг: 0 / 0
Помогите дописать запрос
    #39789385
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ааааааа!
А всё думал, откуда первый нолик...
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите дописать запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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