目前,我的代码如下所示:
Author.joins(:books).group("authors.id").order("count (authors.id) desc")
根据作者撰写的书数来订购。但是,books是一个非常大的数据库表。因此,为了加快速度而不必使用.joins,如何编写可以使用.pluck语句来获取books.id的内容,例如:
Author.order("count (id: Book.uniq.pluck(:author_id)) desc")
(此代码会出现语法错误) 这主要是它如何编写和格式化的问题?或者,有没有更好的方法来重构这种类型的陈述?
答案 0 :(得分:0)
您可以阅读有关ORDER BY the IN value list
的问题。只有可用选项,没有连接而没有创建其他Postgres功能,使用如下命令:
self.__animation = QPropertyAnimation(self, "geometry")
TypeError: arguments did not match any overloaded call:
QPropertyAnimation(parent: QObject = None): too many arguments
QPropertyAnimation(QObject, Union[QByteArray, bytes, bytearray], parent: QObject = None): argument 2 has unexpected type 'str'
您可以在Rails中构建这样的查询:
ORDER BY id=1 DESC, id=3 DESC, id=2 DESC, id=4 DESC
这会奏效。虽然如果出于性能原因,当Author表包含大量记录时,最好使用counter_cache column(由@tegon建议)。