2015-01-16 4 views
1

Я просто ищу простой код, который удаляет верхнюю запись из таблицы.Как удалить только верхнюю запись из таблицы?

Я пробовал:

SqlCommand Delete = new SqlCommand("Command String", cn); 
cn.Open(); 
Delete.CommandText = "DELETE TOP (1) queue.* FROM queue "; 
Delete.ExecuteNonQuery(); 
cn.Close(); 

Но я получаю сообщение об ошибке:

Incorrect syntax near '*'.

TOP только кажется, работать с SELECT.

+0

Попробуйте этот. 'DELETE TOP 1 FROM queue' –

+0

Любопытно, но действительно ли вы верите, что первая строка абсолютно та, которую вы хотите удалить, без заказа или выбора определенного идентификатора? –

+0

Да всегда самая лучшая запись, которую нужно удалить. только проблема теперь получает обновление datagrid после удаления записи – ghost10000

ответ

1

Ваш запрос sql для удаления верхней записи неверен.

Заменить Это:

Delete.CommandText = "DELETE TOP (1) queue.* FROM queue "; 

С

Delete.CommandText = "DELETE TOP(1) FROM queue"; 
+0

спасибо, что это работает :) – ghost10000

+0

Добро пожаловать :) –

+1

I echo @ комментарий icemanind. Это удаляет строку _arbitrary_. Нет такой вещи, как «верхняя» строка без порядка. Если вы просто хотите удалить одну случайную строку за раз, это нормально. Помните, что это случайно! –

4

Вы можете сделать это:

DELETE TOP(1) FROM queue 

Однако, это будет просто удалить случайную строку (скорее всего, первый ряд, но не обязательно). Вероятно, вы хотите сделать что-то более содержательное, например:

DELETE FROM queue WHERE queueId IN (
    SELECT TOP 1 queueId FROM queue ORDER BY queueId 
) 

Это просто пример. Я не знаю вашу структуру или поля таблицы, поэтому вам нужно будет решить, как ее заказать самостоятельно. Имейте в виду, что выдача «DELETE TOP (1) из очереди» необязательно удаляет первую строку. Что он делает, так это удаление первого SQL-сервера SQL Server, который решил вам служить. Это может быть или не быть первой строкой в ​​вашей таблице.

+0

Мне пришлось добавить еще один столбец с Интенсивностью Идентификации, чтобы обеспечить первую запись в первой записи, но она работает. спасибо за вашу помощь :) – ghost10000

+0

Вот как я напишу второй пример: без использования TOP_: 'DELETE FROM queue WHERE queueId = (SELECT MIN (queueId) FROM queue)'. – Turophile

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