这与此问题类似:
SQL query with limit on rows from one table, not the result set
但给出答案的问题是:
SELECT t3.a, t2.b FROM (SELECT * FROM t1 LIMIT 5) t3
LEFT JOIN t2 ON ...
当从t1中选择时,它需要随机(我不确定是否真的是随机的)行。我们可以添加订购。但是当它命令时,它也需要最后一行或第一行。所以它可能需要前5行与连接条件不匹配。
我想要的是获取与过滤器匹配的行并匹配连接条件。然后限制它们。我想要限制的原因是因为如果用户使用过滤器使其运行过多,我不想过多地加载我的数据库。
目前限制只是使用条件之间的日期。在运行SQL查询之前,如果日期间隔不是太宽,则会检查日期间隔。
但是日期间隔限制的问题是,如果设置了其他过滤器,它会给出非常少的结果集。
答案 0 :(得分:0)
完成这篇文章后,尚未提交,得到了如何解决的想法,并且它有效。因为我写了这么多,我正在发布解决方案。
在子查询中移动连接,类似这样(没有测试过这个,因为测试了我的实际应用程序sql)
SELECT t3.a, t3.b FROM (
SELECT * FROM t1
INNER JOIN t2 ON ...
LIMIT 5
) t3
我使用内连接,因为那是我在实际应用中所做的。所以现在我们有5行的限制,它匹配t1和t2,而不是随机的t1(如果排序则是第一个或最后一个)