2015-10-18 1 views
1

Я новичок в SQL, и я смотрел ключевое слово DELETE. Я хочу знать, как я могу удалить несколько строк за один раз. Например, я хочу удалить CategoryID 2,3,5. Я пытаюсьКак удалить определенные строки в таблице sql

DELETE FROM Categories 
WHERE CategoryID="2"AND CategoryID="3" AND CategoryID="5"; 

, но не строки и не удалены. И если я использую OR, то все удаляется.

Имя Таблица Категории

CategoryID CategoryName   
    1   Beverages   
    2   Condiments   
    3   Confections  
    4   Dairy Products  
    5   Grains/Cereals  
    6   Meat/Poultry 
+0

Просто добавьте, чтобы сделать вас более понятным. Вы ничего не удаляете с помощью И, потому что нет строки, которая в то же время относится к категории 2,3 и 5. Sql проверяет строку за строкой, и это условие (будучи категорией 2,3 и 5 в одно и то же время) ни одна из строк соблюдать его. Вот почему в этом случае вам нужно использовать ключевое слово IN. – elvainch

+1

Двойные кавычки для идентификаторов, т. Е. В вашем DELETE «2» означает столбец с именем 2. Используйте одинарные кавычки для строковых литералов и вообще не кавычки для целых литералов. – jarlh

ответ

3

Использование IN:

DELETE FROM Categories 
WHERE CategoryID IN (2, 3, 5); 
+0

Это сработало. Спасибо –

0

В вашем случае запроса,

DELETE FROM Categories 
WHERE CategoryID="2"AND CategoryID="3" AND CategoryID="5"; 

нет строки с данными с той же категории ид как 2, 3,5. Итак, вы можете использовать «IN» для получения соответствующих строк. (3 строки из ваших данных)

+0

Вы забыли часть решения. (То же самое, что и у Гордона Линоффа ...) – jarlh

+0

'' 2 "' это имя столбца в SQL, а не число. Цифрам не нужны кавычки _any_, а символьным значениям нужны одинарные кавычки ''2'' –

+0

, поэтому в SQL мы должны использовать одинарную кавычку, это то, что вы говорите? @ А-лошадь-с-не-имени –

 Смежные вопросы

  • Нет связанных вопросов^_^