簡體   English   中英

改進SQL查詢以排除項目

[英]Improve sql query to exclude items

是否可以改善以下查詢:

SELECT * 
FROM   search s left join search_criteria sc ON s.id = sc.search_id
WHERE  sc.deleted_at IS NOT NULL 
AND    s.id NOT IN
        (  SELECT s.id
           FROM   search s
                    left join search_criteria sa ON s.id = sc.search_id
           WHERE sc.deleted_at IS NULL
        )
GROUP BY s.id

謝謝

這取決於-如果默認數據庫是kelformation,那么我認為您的查詢實際上可以簡化為:

SELECT  * 
FROM    search s left join search_criteria sc ON s.id = sc.search_id
WHERE   sc.deleted_at IS NOT NULL 
GROUP BY s.id

考慮下一個場景:

你有一個裝滿大理石的盒子。 什么會更快?

  • 顯示整個盒子(只需將其灑在桌子上)

  • 或僅顯示帶有綠色點的大理石(在顯示每個大理石之前,您需要對其進行檢查)。

現在,看來您必須排除在外,因此您必須繼續使用它。
MySql內部查詢有問題。 您需要將其更改為LEFT JOIN。
提供您的架構以獲得更詳細的答案。

嘗試這個 ::

SELECT * 
FROM   search s
          left join search_criteria sc ON s.id = sc.search_id
          left join kelformation.search ks on (s.id=ks.id)
          left join search_criteria sa ON ks.id = sa.search_id
WHERE  sc.deleted_at IS NOT NULL and sc.deleted_at IS NULL 
AND    /*Primary key of kelformation.search */ is null
GROUP BY s.id

暫無
暫無

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

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