PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Porównaj wyniki dwóch funkcji tabel przy użyciu jednej kolumny z każdej

Wszystkie poniższe odpowiedzi zakładają, że wiersze są zwracane w dopasowaniu zamówienie.

Postgres 9.3

Dzięki dziwacznej funkcji rozbijania wierszy z funkcji SRF zwracających to samo liczba rzędów równolegle:

SELECT count(*) AS mismatches
FROM  (
   SELECT function1('tblp1','tblp2',49) AS f1
        , function2('tblp1_v2','tblp2_v2',49) AS f2
   ) sub
WHERE  (f1).dist <> (f2).dist;  -- note the parentheses!

Nawiasy wokół typu wiersza są niezbędne do odróżnienia od możliwego odwołania do tabeli. Szczegóły w instrukcji tutaj.

Jest to domyślnie iloczyn kartezjański wierszy, jeśli liczba zwróconych wierszy nie jest taka sama (co spowodowałoby całkowite zerwanie).

Postgres 9.4

Z PORZĄDKOŚCIĄ do generowania numerów wierszy w locie

Możesz użyć Z PORZĄDKOŚCIĄ aby wygenerować numer wiersza w locie i nie trzeba polegać na parowaniu wyników funkcji SRF w SELECT lista:

SELECT count(*) AS mismatches
FROM      function1('tblp1','tblp2',49)       WITH ORDINALITY AS f1(id,dist,rn)
FULL JOIN function2('tblp1_v2','tblp2_v2',49) WITH ORDINALITY AS f2(id,dist,rn) USING (rn)
WHERE  f1.dist IS DISTINCT FROM f2.dist;

Działa to dla tej samej liczby wierszy z każdej funkcji, a także dla różnych liczb (które zostałyby uznane za niezgodność).

Powiązane:

ROWS FROM łączyć zestawy wiersz po wierszu

SELECT count(*) AS mismatches
FROM   ROWS FROM (function1('tblp1','tblp2',49)
                , function2('tblp1_v2','tblp2_v2',49)) t(id1, dist1, id2, dist2)
WHERE  t.dist1 IS DISTINCT FROM t.dist2;

Powiązana odpowiedź:

Na bok:
WYKONAJ FORMAT nie jest ustawioną funkcjonalnością plpgsql. ZWROT ZAPYTANIA jest. format() jest po prostu wygodną funkcją do budowania ciągu zapytania, może być używana w dowolnym miejscu w SQL lub plpgsql.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć podciągi w SQL (Postgres)

  2. jak pogrupować i zwrócić wiersz sum w Postgres

  3. PostgreSQL - kolumna Aliasy i HAVING

  4. Zmiana typu kolumny na dłuższe ciągi w szynach

  5. SQLAlchemy:grupuj według dnia w wielu tabelach