PostgreSQL, pobranie trzech pierwszych rekordów bez LIMIT

0

Witam,
Chciałbym zapytać w jaki sposób mogę napisać zapytanie SQL, które zadziała w PostgreSQL bez intrukcji LIMIT: chcę pobrać tylko 3 pierwsze rekordy. Nie chcę używać instrukcji limit (nie wszystkie RDBMS) je wspierają.

Przykładowo, jak przekształcić następujące zapytanie?

SELECT * FROM username LIMIT 3;

Definicja tabeli:

CREATE TABLE username
(
  id_user bigint NOT NULL DEFAULT nextval('username_seq'::regclass),
  name character varying(40) NOT NULL,
  surname character varying(40) NOT NULL,
  CONSTRAINT id_user PRIMARY KEY (id_user)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE username
  OWNER TO postgres;
0

Ale to chcesz napisać zapytanie dla PostgreSQL czy uniwersalne dla wszystkich dialektów SQL?

0

Metoda uniwersalna (pewnie najgorsza):

SELECT * FROM username AS px
WHERE (
  SELECT COUNT(*)
  FROM username AS py
  WHERE py.id_user < px.id_user
) < 3

Więcej metod:
http://troels.arvin.dk/db/rdbms/#select-limit

1

A dlaczego nie chcesz zrobić sobie wrapperów dla poszczególnych dbms ? Zblokujesz się 100 X zanim coś napiszesz a i tak finalnie nie będzie działać poprawnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1