对同一个表的两个查询

时间:2016-05-22 19:04:49

标签: peewee

我需要从表中获取25行。 首先,我需要获得所有固定线程。然后我需要得到(25个固定的)常规线程。

是否可以使用一个查询获取这些行? 现在我使用两个单独的查询:

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

1 个答案:

答案 0 :(得分:1)

未经测试,但你可以这样做:

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))