2016-05-22 12 views
0

Ich brauche 25 Zeilen aus einer Tabelle. Zuerst muss ich alle fixierten Threads bekommen. Dann muss ich (25-pinned) reguläre Threads bekommen.Zwei Abfragen an die gleiche Tabelle

Ist es überhaupt möglich, diese Zeilen mit einer Abfrage zu bekommen? Jetzt benutze ich zwei separate Abfragen wie folgt:

p = Thread.select().where(Thread.pinned).limit(25) 
t = Thread.select().where(Thread.pinned >> None).limit(25-len(p)) 
+0

Welche Art von Feld fixiert ist? Können Sie uns die relevanten Teile Ihrer Modelldefinition zeigen? –

Antwort

1

Ungeprüfte, aber man konnte tun:

case_stmt = case(None, (
    (Thread.pinned >> None, 0), 
), 1)) 
(Thread 
.select(Thread, case_stmt.alias('pinned_first')) 
.order_by(SQL('pinned_first').asc()) 
.limit(25)) 
Verwandte Themen