複数のアイテムに対してN個の最新のコメントを取得するためのクエリを作成しようとしています。MySQLとSQLAlchemy:N個の最近のコメントを複数のアイテムで取得する
現在、私は、アイテムごとのクエリでアイテムをループしています:
for i in itemIds:
Comment.query.filter_by(itemId=i).order_by(Comment.id.desc()).limit(3)
しかし、これは本当に遅いです。
私はすべてのコメントを取得するが、どのようにわからない単一のクエリをしたいと思います。私はunion
を使ってみましたが、うまく動作しませんでした。 MySQLには、order_by
、union
という問題があるようです。
a = Comment.query.filter_by(itemId=1).order_by(Comment.id.desc()).limit(3)
b = Comment.query.filter_by(itemId=2).order_by(Comment.id.desc()).limit(3)
u = union_all(a,b)
DB.session.query(Comment).select_from(u).all()
しかし、それは動作しません。 'UNIONとORDER BYの不正な使用法'について不平を言っています。
私はMySQLまたはSQLAlchemyの忍者ではありません。私はこれについて長年頭を悩ましています。
お願いします!どんなポインタやアドバイスも大歓迎です。 SQLのバージョンについては
恐ろしい...それをしません。本当にありがとう! – aspiringwebninja