<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - DELETE z opcją LIMIT]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=624</link>
		<description><![CDATA[Najświeższe odpowiedzi w DELETE z opcją LIMIT.]]></description>
		<lastBuildDate>Sun, 21 Aug 2011 14:20:08 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: DELETE z opcją LIMIT]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2639#p2639</link>
			<description><![CDATA[Sam DELETE nie posiada opcji LIMIT, ale w takim przypadku można skorzystać z [url=http://www.postgresql.org/docs/current/interactive/ddl-system-columns.html]kolumny systemowej[/url] ctid (każda tabela posiada własny zestaw takich "ukrytych" kolumn) np.:

[code]DELETE FROM proba
WHERE ctid =
    (SELECT ctid
    FROM proba
    WHERE a1 = 1 AND a2 LIKE 'pol'
    LIMIT 1);
DELETE 1
TABLE proba;
 a1 | a2  
----+-----
  1 | pol
(1 row)[/code]

Bardziej rozbudowana postać (dla większych limitów):

[code]DELETE FROM proba
WHERE ctid IN
    (SELECT ctid
    FROM proba
    WHERE a1 = 1 AND a2 LIKE 'pol'
    LIMIT 2);[/code]

Nieco więcej na ten temat można znaleźć [url=http://www.postgres.cz/index.php/PostgreSQL_SQL_Tricks#Fast_first_n_rows_removing]tutaj[/url].]]></description>
			<author><![CDATA[dummy@example.com (gszpetkowski)]]></author>
			<pubDate>Sun, 21 Aug 2011 14:20:08 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2639#p2639</guid>
		</item>
		<item>
			<title><![CDATA[DELETE z opcją LIMIT]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2638#p2638</link>
			<description><![CDATA[Witam

Ciekawi mnie czy da się w postgresie zrobić zapytanie ,które usunie mi tylko 1 rząd z mimo warunku zapytania.

Objaśnienie:

Mam tabelke:
[code]
CREATE TABLE proba
(
  a1 integer,
  a2 character varying
)[/code]

Dodaje do niej dane:
[code]
insert into proba(a1,a2) select 1,'pol'
insert into proba(a1,a2) select 1,'pol'
[/code]

Mam w niej dwa identyczne rzędy.

Teraz chciałbym zrobić to o co mi głównie chodzi.
[code]
delete from proba where a1 = 1 and a2 = 'pol' LIMIT 1
[/code]

czyli chcę by skasował mi tylko jeden rząd.

Proszę was o pomoc]]></description>
			<author><![CDATA[dummy@example.com (Rogo)]]></author>
			<pubDate>Sun, 21 Aug 2011 13:44:27 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2638#p2638</guid>
		</item>
	</channel>
</rss>
