mySql限制连接的表行,但如果未达到限制,则包括所有匹配连接条件

时间:2014-10-15 13:50:38

标签: mysql join

这与此问题类似:

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查询之前,如果日期间隔不是太宽,则会检查日期间隔。

但是日期间隔限制的问题是,如果设置了其他过滤器,它会给出非常少的结果集。

1 个答案:

答案 0 :(得分:0)

完成这篇文章后,尚未提交,得到了如何解决的想法,并且它有效。因为我写了这么多,我正在发布解决方案。

在子查询中移动连接,类似这样(没有测试过这个,因为测试了我的实际应用程序sql)

SELECT t3.a, t3.b FROM (
   SELECT * FROM t1 
      INNER JOIN t2 ON ...
         LIMIT 5
    ) t3

我使用内连接,因为那是我在实际应用中所做的。所以现在我们有5行的限制,它匹配t1和t2,而不是随机的t1(如果排序则是第一个或最后一个)