Что не так с этим запросом:
INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;
Работает без WHERE
оговорки. Кажется, я забыл свой SQL ..
Синтаксис MySQL INSERT не поддерживает предложение WHERE, поэтому ваш запрос в его нынешнем виде завершится ошибкой. Предполагая, что ваш id
столбец является уникальным или первичным ключом:
Если вы пытаетесь вставить новую строку с ID 1, вам следует использовать:
INSERT INTO Users(id, weight, desiredWeight) VALUES(1, 160, 145);
Если вы пытаетесь изменить значения веса / желаемого веса для существующей строки с идентификатором 1, вы должны использовать:
UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;
Если вы хотите, вы также можете использовать синтаксис INSERT .. ON DUPLICATE KEY, например:
INSERT INTO Users (id, weight, desiredWeight) VALUES(1, 160, 145) ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145
ИЛИ даже так:
INSERT INTO Users SET id=1, weight=160, desiredWeight=145 ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145
Также важно отметить, что если ваш id
столбец является столбцом с автоинкрементом, вы можете полностью исключить его из INSERT и позволить mysql увеличивать его как обычно.
If you're trying to insert a new row with ID 1 you should be using
INSERT INTO. В вашем случае вы пытаетесь вставить, когда ID 1 уже существует, и это первичный или уникальный ключ, и не удается, поэтому вам следует использовать синтаксис UPDATE или INSERT .. ON DUPLICATE KEY синтаксисВы не можете комбинировать предложение WHERE с предложением VALUES. Насколько мне известно, у вас есть два варианта:
INSERT с указанием значений
INSERT с помощью оператора SELECT
источник
Вы используете предложение WHERE для запросов UPDATE. Когда вы INSERT, вы предполагаете, что строка не существует.
Тогда заявление ОП станет;
В MySQL, если вы хотите INSERT или UPDATE, вы можете использовать запрос REPLACE с предложением WHERE. Если WHERE не существует, он ВСТАВЛЯЕТ, иначе ОБНОВЛЯЕТ.РЕДАКТИРОВАТЬ
Я думаю, что точка зрения Билла Карвина достаточно важна, чтобы вырваться из комментариев и сделать ее очень очевидной. Спасибо, Билл, я слишком давно не работал с MySQL, я вспомнил, что у меня были проблемы с REPLACE, но я забыл, что это было. Я должен был поискать это.
MySQL REPLACE работает не так. Он выполняет DELETE (который может не выполняться, если строка не существует), за которым следует INSERT. Подумайте о последствиях vis. триггеры и зависимости внешнего ключа. Вместо этого используйте INSERT ... ON DUPLICATE KEY UPDATE.
источник
Я не верю, что во вставке есть предложение WHERE.
источник
Вставить запрос не поддерживает ключевое слово where *
Условия применяются, потому что вы можете использовать условие where для операторов подвыбора. Вы можете выполнять сложные вставки, используя подвыборки.
Например:
Поместив «select» в оператор вставки, вы можете быстро выполнять множественные вставки.
При использовании этого типа вставки вы можете проверить количество вставляемых строк. Вы можете определить количество строк, которые будут вставлены, выполнив следующий оператор SQL перед выполнением вставки.
Вы можете убедиться, что вы не вставляете повторяющуюся информацию, используя условие EXISTS.
Например, если у вас есть таблица с именем clients с первичным ключом client_id, вы можете использовать следующий оператор:
Этот оператор вставляет несколько записей с подзапросом.
Если вы хотите вставить одну запись, вы можете использовать следующий оператор:
Использование двойной таблицы позволяет вам вводить значения в операторе выбора, даже если значения в настоящее время не хранятся в таблице.
См. Также Как вставить с предложением where
источник
Правильный ответ на этот вопрос будет примерно таким:
а). ЕСЛИ хотите выбрать перед вставкой:
б). Если запись уже существует, используйте обновление вместо вставки:
Должно быть
с). Если вы хотите обновить или вставить одновременно
г). Если вы хотите КЛОНИРОВАТЬ запись из ОДНОЙ таблицы, просто помните, что вы не можете выбирать из таблицы, в которую вставляете, поэтому
Я думаю, что это хорошо покрывает большинство сценариев
источник
Вы просто не можете использовать WHERE при выполнении инструкции INSERT:
должно быть:
Часть WHERE работает только в операторах SELECT:
или в операторах UPDATE:
источник
Вставить в = Добавление строк в таблицу
Upate = обновить определенные строки.
Что будет описывать предложение where во вставке? Ничего не найдено, строка не существует (пока) ...
источник
Вы можете выполнить условную вставку INSERT на основе ввода пользователя. Этот запрос будет вставляться только в том случае, если входные переменные '$ userWeight' и '$ userDesiredWeight' не пустые.
источник
Это зависит от ситуации, когда INSERT действительно может иметь предложение where.
Например, если вы сопоставляете значения из формы.
Имеет смысл, не так ли?
источник
Самый простой способ - использовать IF для нарушения ключевого ограничения. Это работает только для INSERT IGNORE, но позволит вам использовать ограничение в INSERT.
источник
После
WHERE
предложения вы помещаете условие, и оно используется либо для выборки данных, либо для обновления строки. Когда вы вставляете данные, предполагается, что строка не существует.Итак, вопрос в том, есть ли строка с идентификатором 1? в таком случае используйте MySQL UPDATE , иначе используйте MySQL INSERT .
источник
Если вы указываете конкретную запись no для вставки данных, лучше использовать
UPDATE
оператор вместоINSERT
оператора.Этот тип запроса, который вы написали в вопросе, похож на фиктивный запрос.
Ваш запрос: -
Здесь вы указываете id = 1, поэтому лучше использовать
UPDATE
оператор для обновления существующей записи. Не рекомендуется использоватьWHERE
предложение в случае.INSERT
Вы должны использоватьUPDATE
.Теперь используется запрос на обновление: -
источник
Ответ однозначно отрицательный.
Добавление предложения WHERE после INSERT INTO ... VALUES ... является недопустимым SQL и не будет анализироваться.
Ошибка, возвращаемая MySQL:
Самая важная часть сообщения об ошибке:
который показывает конкретную часть, которую парсер не ожидал найти здесь: предложение WHERE.
источник
это совершенно неправильно. INSERT QUERY не имеет предложения WHERE, оно есть только в UPDATE QUERY. Если вы хотите добавить данные, где id = 1, ваш запрос будет
источник
Нет. Насколько мне известно, в этот запрос нельзя добавлять предложение WHERE. Возможно, я тоже забыл свой SQL, потому что я не совсем уверен, зачем он вам нужен.
источник
Вы не должны использовать условие where в операторе Insert. Если хотите, используйте insert в операторе обновления, а затем обновите существующую запись.
На самом деле могу я знать, зачем вам нужно предложение where в операторе Insert ??
Может быть, исходя из причины, я мог бы предложить вам лучший вариант.
источник
Я думаю, ваш лучший вариант - использовать REPLACE вместо INSERT
источник
ПРОЧИТАЙТЕ ЭТО ТАКЖЕ
Это не имеет смысла ... даже буквально
INSERT
означает добавить,new row
и когда вы говорите,WHERE
что определяете, о какой строке вы говорите вSQL
.Таким образом, добавление новой строки невозможно с условием для существующей строки.
Вам нужно выбрать одно из следующего:
A. Используйте
UPDATE
вместоINSERT
Б. Предложение использовать
INSERT
и удалитьWHERE
(я просто говорю это ...) или, если вы действительно обязаны использовать,INSERT
иWHERE
в одном операторе это можно сделать только с помощью предложения INSERT..SELECT ...Но это служит совершенно другой цели, и если вы определили id как первичный ключ, эта вставка будет неудачной, иначе будет вставлена новая строка с id = 1.
источник
Я знаю, что это старый пост, но я надеюсь, что это все равно кому-то поможет, и я надеюсь, что это простой пример:
задний план:
У меня было много и много случаев: один и тот же пользователь указан несколько раз с несколькими значениями, и я хотел создать новую запись, поэтому ОБНОВЛЕНИЕ не имело бы смысла в моем случае, и мне нужно было обратиться к конкретному пользователю так же, как и я. с помощью предложения WHERE.
Используя эту конструкцию, вы на самом деле нацеливаетесь на конкретного пользователя (user123, у которого есть другие записи), поэтому, я полагаю, вам действительно не нужно предложение where.
вывод может быть:
источник
Способ использования INSERT и WHERE
INSERT INTO MYTABLE SELECT 953,'Hello',43 WHERE 0 in (SELECT count(*) FROM MYTABLE WHERE myID=953);
В данном случае это не как exist-test. Нет исключения, если вы запустите его два или более раз ...источник
правильный синтаксис для mysql insert into statement с использованием метода post:
источник
Я не думаю, что мы можем использовать предложение where в операторе вставки
источник
источник
Вы не можете использовать INSERT и WHERE вместе. Вы можете использовать предложение UPDATE для добавления значения в конкретный столбец в конкретном поле, как показано ниже;
источник
Я думаю, что правильная форма для вставки значения в указанную строку:
он работает, и аналогично, если вы пишете на Microsoft SQL Server
на mysql вам нужно обновить таблицу.
источник
Вы можете сделать это с помощью следующего кода:
источник