2017-10-26 1 views

Antwort

4

arbeiten einfach auf die ID und die Quelle verlassen außerhalb des Funktionsaufrufs:

select xxx(id) 
from mytable where ...; 

Update für das downvoter: siehe es in Aktion here

+1

Ich möchte die Funktion mit der ID aufrufen, deshalb bekomme ich sie mit einem Select. – Fla

+1

Wow, eigentlich funktioniert das so, tut mir leid. Ich dachte wirklich, dass die Auswahl zuerst gemacht werden musste. Vielen Dank! – Fla

1

Sie nicht Unterabfrage als Argument übergeben können. Eine Möglichkeit ist LATERAL JOIN zu verwenden:

SELECT xxx(s.id) 
FROM table t1 
LEFT JOIN LATERAL (select id from mytable where ... order by ... limit 1) s 
    ON true; 

Dies nützlich ist, wenn Sie brauchen eine gewisse Korrelation zwischen Haupttabelle und Unterabfrage zu tun.


Wenn nur ein Wert:

SELECT xxx(s.id) 
FROM (subquery) s; 

oder unten beantworten.

+0

Ich habe LATERAL nicht gewusst, das ist interessant. Kannst du mir sagen, was die 'table t1' ist und warum' ON true' benötigt wird? – Fla

+0

@Fla Ich habe gedacht, dass Sie eine Art von correlated Unterabfrage benötigen. – lad2025

+0

In Ordnung, so dass es möglich ist, darauf zu loopen. Aber meine Unterabfrage ist verdammt einfach, also funktioniert die Antwort unten oO. Ich dachte wirklich, dass die Auswahl zuerst gemacht werden musste, mein Schlechter. Trotzdem danke. – Fla

Verwandte Themen