2014-07-22 1 views
0

следующего мой столкак удалить фиксированное количество строк из таблицы с нулевыми значениями в PostgreSQL

CREATE TABLE tblnull 
    (
     tnull integer 
    ) 

, например tblnull содержит 3652 строки всех строк являются NULL Так как я могу удалить только 3452 строку из tblnull на PostgreSQL и SQL-Server

+0

'' postgresql' или SQL-сервера 'какой из них вы используете? –

+0

с использованием обоих .... –

+0

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

ответ

1

В Postgres, вы можете сделать это с помощью скрытой ctid колонки:

DELETE FROM tblnull WHERE ctid IN (SELECT ctid FROM tblnull LIMIT 3452) 
+0

для [ctid] (http: //www.postgresql .org/документы/ток/интерактивный/DDL-система-columns.html) –

1

Try следующий запрос:

DELETE z 
FROM (SELECT TOP 3452 * FROM tbnull)z 
+0

ее работа для 'sql-server' –

0

Просто измените число в SETROWCOUNT, сколько записей вы хотите удалить

DECLARE @tableNULL table ([ID] INT) 
    INSERT INTO @tableNULL ([ID])VALUES (1) 
    INSERT INTO @tableNULL ([ID])VALUES (2) 
    INSERT INTO @tableNULL ([ID])VALUES (3) 
    INSERT INTO @tableNULL ([ID])VALUES (4) 
    INSERT INTO @tableNULL ([ID])VALUES (5) 
    set rowcount 3 

while 1=1 
begin 
begin tran 
delete from @tableNULL 
commit tran 
if @@rowcount = 0 
break 
end 

set rowcount 0 
Select * from @tableNULL 
+0

попытка хорошая, но сложная, как по сравнению с другими ответами –

+1

Запросы T-SQL проще для меньшего количества данных, и если мы собираемся иметь дело с огромным набором данных, это идеальный способ @keet .. – mohan111

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