複数のアイテムの最新のN個のコメントを取得するためのクエリを作成しようとしています。
現在、アイテムごとのクエリでアイテムをループしています。
for i in itemIds:
Comment.query.filter_by(itemId=i).order_by(Comment.id.desc()).limit(3)
しかし、これは本当に遅いです。
すべてのコメントを取得する単一のクエリが欲しいのですが、方法がわかりません。使ってみunion
ましたが、うまくいきません。order_by
MySQL 、、、およびに問題があるよう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とORDERBYの誤った使用法」について文句を言います。
私はMySQLやSQLAlchemyの忍者ではなく、何時間もこれに頭を悩ませてきました。
助けてください!任意のポインタやアドバイスをいただければ幸いです。