У меня проблема с моими запросами в MySQL. Моя таблица имеет 4 столбца и выглядит примерно так:
id_users id_product quantity date
1 2 1 2013
1 2 1 2013
2 2 1 2013
1 3 1 2013
id_users
и id_product
являются внешними ключами из разных таблиц.
Что я хочу, чтобы удалить только одну строку:
1 2 1 2013
Который появляется дважды, поэтому я просто хочу удалить его.
Я пробовал этот запрос:
delete from orders where id_users = 1 and id_product = 2
Но это удалит их обоих (так как они дублируются). Любые советы по решению этой проблемы?
mysql
delete-row
Дани
источник
источник
Все таблицы должны иметь первичный ключ (состоящий из одного или нескольких столбцов), повторяющиеся строки не имеют смысла в реляционной базе данных. Вы можете ограничить количество удаляемых строк, используя
LIMIT
:Но это только решает вашу текущую проблему, вы должны определенно работать над большей проблемой, определяя первичные ключи.
источник
Вам необходимо указать количество строк, которые должны быть удалены. В вашем случае (и я предполагаю, что вы хотите сохранить только один) это можно сделать так:
источник
Лучший способ создать таблицу - добавить одну временную строку в качестве автоматического приращения и сохранить в качестве первичного ключа. Таким образом, мы можем избежать таких выше вопросов.
источник
Ответы на удаление строк уже есть
LIMIT
. В идеале у вас должен быть первичный ключ в вашей таблице. Но если нет.Я дам другие способы:
Я вижу, что id_users и id_product должны быть уникальными в вашем примере.
Это позволит удалить дубликаты строк с одинаковыми данными.
Но если вы все еще получаете ошибку, даже если вы используете предложение IGNORE, попробуйте это:
Если есть несколько строк с одинаковыми значениями, вы также можете воссоздать таблицу
источник
Вы должны добавить идентификатор, который автоматически увеличивается для каждой строки, после этого вы можете удалить строку по ее идентификатору. так что ваша таблица будет иметь уникальный идентификатор для каждой строки и id_user, id_product ecc ...
источник