簡體   English   中英

MySql限制聯接表行,但如果未達到限制,則包括所有匹配聯接條件的行

[英]mySql limiting joined table rows but include all which matches join condition if limit is not reached

這類似於以下問題:

SQL查詢限制一個表中的行,而不是結果集

但是給出答案的問題是:

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

當從t1中選擇時,它需要隨機(我不確定是否真的是隨機的)行。 我們可以添加訂購。 但是在訂購時,它也需要最后一行或第一行。 因此,它可能需要前5行,但無論如何都不符合連接條件。

我想要的是獲取與過濾器匹配並與連接條件匹配的行。 然后限制它們。 我之所以要限制,是因為如果用戶使用過分運行的篩選器,我不想過多地加載數據庫。

當前限制只是使用日期之間的條件進行日期限制。 並且在運行SQL查詢之前,檢查日期間隔是否太寬。

但是日期間隔限制的問題在於,如果設置了其他過濾器,它給出的結果集將很少。

在完成這篇文章(尚未提交)之后,就知道了如何解決的想法,並且它起作用了。 因此,由於我寫了很多書,所以我正在發布解決方案。

移動聯接子查詢,類似這樣(未測試此,因為正在測試我的真實應用程序sql)

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

我使用內部聯接,因為那是我在實際應用程序中所做的。 所以現在我們有5行的限制,它們匹配t1和t2,而不是t1的隨機數(如果訂購的話,則是第一個或最后一個)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM