SQL: Как вы справляетесь с условным удалением? - PullRequest
1 голос
/ 15 января 2009

Я озадачен тем, как написать хранимую процедуру для обработки условного удаления.

У меня есть таблица с 4 столбцами (ID, A, B, C), и данные в таблице выглядят так:

ID  | A             | B     | C
----------------------------------
1   | Debbie Jones  |       |   
2   | John Jones    |       |
3   | James Jones   |       |

Столбцы A, B и C содержат имя человека. Как написать хранимую процедуру, которая удалит строку Debbie Jones и не повлияет на две другие строки, а столбец B и C будет пустой строкой?

Ответы [ 7 ]

4 голосов
/ 15 января 2009
delete from YourLousyTableName
where A='Debbie'AND B='Jones'

при условии, что ID = 1 A = 'Debbie' B = 'Jones' C = ''

2 голосов
/ 15 января 2009

Тогда вам нужно другое условие. Если вы хотите удалить Дебби Джонс, вам нужно указать это в своем состоянии, указав этот столбец A = "Debbie Jones" или столбец ID, равный 1.

Это предполагает, конечно, что значения в столбцах ID и A уникальны и могут однозначно идентифицировать строку.

1 голос
/ 15 января 2009

Возможно, я не совсем понимаю ваш вопрос, но вы ищете что-то подобное?

delete from Table
where [Name] = 'Debbie Jones';
0 голосов
/ 08 апреля 2011

Вы можете попробовать следующую команду:

x=sqldf(select * from [table_name] where A!='Derbie Jones')
0 голосов
/ 15 января 2009

Я не думаю, что вам понадобится что-то вроде хранимой процедуры для такого типа ситуации. любой, попробуйте это,

create procedure prcDelUsingID
@UID <Data Type of the ID column> 
as
delete from <Your Table Name>
where ID=@UID

выполнить хранимую процедуру следующим образом,

prcDelUsingID <ID of the Debbie Jones>
0 голосов
/ 15 января 2009

Прежде всего, ваш пример должен быть правильно отформатирован в вашем вопросе (используйте кодовый тег!)

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

DELETE FROM MyTable WHERE ID=4

|ID|       A      |  B  |  C  |
|==|==============|=====|=====|
| 1| Debbie Jones | " " | " " |
| 2| John Jones   | " " | " " |
| 3| James Jones  | " " | " " |
0 голосов
/ 15 января 2009

Вы имеете в виду DELETE FROM table WHERE A = "Debbie Jones";?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...