Member 10850253 Ответов: 1

Удаление строк в таблице на основе нескольких критериев


У меня есть таблица с именем poa и 8 полей, и 2 из этих полей-year2 и proyecto.
Я хочу удалить данные, основанные на этих 2 полях, так что когда я выберу проект на своем веб-сайте, а затем год, скажем 2017, строки, соответствующие этим 2 полям, будут удалены.
Может кто-то пожалуйста, помогите мне?
Спасибо.

Что я уже пробовал:

delete from poa where year2 like '2017' and proyecto like 'proy1';

[no name]

И в чем же проблема?
Что я вижу, так это то, что вы используете LIKE без персонажа Джокера.

Наконец, ваш SQL будет равна delete from poa where year2 = '2017' and proyecto = 'proy1';

Скорее всего, это ваша проблема.

Member 10850253

Я тоже попробовал, но ничего не вышло. Если у вас есть какие-либо другие предложения, пожалуйста, дайте мне знать.
Спасибо.

[no name]

Что именно вы пробовали?
Что-то вроде delete from poa where year2 = '2017' and proyecto = '*proy1*';

Во всяком случае, опишите более точно, что вы делаете, чего ожидаете и что получаете.

[Редактировать]
Кстати, похоже, что символ Джокера mySQL выглядит как " % " и _not_ "*"

Member 10850253

Именно так, но без персонажа Джокера.

[no name]

Существует ли запись, которая соответствует вашим критериям?

Member 10850253

Да. У меня разные годы и один и тот же проект, но вся таблица удаляется.

[no name]

Приведите пример живых данных, которые вы собираетесь удалить. Используйте "улучшить вопрос" для того, чтобы каждый получил эту информацию.

[no name]

Другой год2 и другие, кроме 2017 года, будут удалены?

Member 10850253

Именно так, но без персонажа Джокера.

Member 10850253

Я думаю, что проблема может заключаться в том, что proy1-это то же самое в случаях poth, но то, что меняется, - это year2. Я попробовал все эти предложения, и вся таблица была удалена. Пожалуйста, дайте мне знать, как я могу это исправить.
Спасибо.

Member 10850253

вы были правы, я смотрел на другой фрагмент кода. Я работал, спасибо.

[no name]

Кстати: это выглядит нормально для меня (sqlfiddle не позволяет удалять, но я ожидаю, что удаление должно быть таким же):
Скрипка SQL[^]

Member 10850253

Я уже пробовал это и получил тот же результат.
Пожалуйста, помогите мне найти другое решение.
Спасибо.

1 Ответов

Рейтинг:
8

OriginalGriff

LIKE-это не очень хороший выбор здесь: он обычно используется для строк, и столбец YEAR должен быть целым числом, а не строкой.
И LIKE действительно полезен только тогда, когда вы даете ему подстановочную спецификацию, аналогичную "*.jpg" в Windows, которая вернет все файлы JPEG в папку.
Для MySQL и SQL Server основным подстановочным знаком является символ"%", который соответствует чему-либо точно так же, как и " * " в Windows.

Если вам не нужны подстановочные знаки, не используйте LIKE; вместо этого используйте '=' :

DELETE FROM poa WHERE year2 = 2017 AND proyecto = 'proy1';