簡體   English   中英

在條件下查詢LEFT JOIN

[英]Query LEFT JOIN on condition

假設我有一個客戶表和一個“more_information”表。

我查詢客戶端列表及其附加信息(並非每個客戶端都有條目,所以我們使用LEFT JOIN):

 SELECT id, name, more_information.data
    FROM clients
    LEFT JOIN more_information
    ON more_information.client_id = clients.id

現在我的問題是:我想查詢“more_information”僅適用於滿足條件的客戶,fe在過去30天內注冊,對於其他我想要的其他人只需為null_information.data

所以像(語法不正確)

 SELECT id, name, more_information.data
    FROM clients
    CASE WHEN clients.registered > '2015-12-27 00:00:00' THEN
        LEFT JOIN more_information
        ON more_information.client_id = clients.id
    ELSE
        null
    END

我知道我可以在SELECT部分​​使用CASE,但這不會提高性能,這是我的目標。

原因是more_information JOIN查詢了大量數據,並且有許多其他條件使得查詢太慢。 我不想在沒有必要的地方查詢它。 甚至可以使用MySQL,還是我需要拆分查詢並進行兩次單獨的查詢?

非常感謝你的想法

只需添加到您的JOIN條件

SELECT id, name, more_information.data
FROM clients
LEFT JOIN more_information
ON more_information.client_id = clients.id AND clients.registered > '2015-12-27 00:00:00'

registeredidclient_id上的INDEX將有助於提高性能。

暫無
暫無

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

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