【发布时间】:2015-10-27 05:21:57
【问题描述】:
我有一个表格查询
SELECT a, b, c from Tbl where [conditions] IN
(SELECT a from Tbl where [conditions]
GROUP BY a HAVING COUNT(*) > N)
ORDER BY a DESC, b LIMIT 100
[conditions] 基本上是一系列 AND 语句,a 是可能重复的列。列a + b 是一个独特的组合。目前我使用GROUP BY 子句只是为了让COUNT(*) > N 工作。我想返回满足[conditions] 并且至少有N 行的列条目的行。如您所见,查询与重复条件基本相同。实现上述目标的更好方法是什么?
谢谢。
【问题讨论】:
-
您需要指定您正在使用的确切
RDBMS名称。 -
我正在使用基于
sqlite的RDBMS -
如果它至少有 N 行,它应该是您在查询中使用的
>= -
好的,我知道,问题的关键是如何优化/最小化这个查询,这样我就不需要重复
[conditions]两次 -
[conditions] IN (SELECT a FROM... )不重要,除非a是一个布尔列,因为[conditions] 返回一个布尔值。