在同一列上使用多個符合條件選擇記錄
在SQL中,選擇滿足同一列上多個條件的記錄可能是一個挑戰。考慮以下場景:
您有一個儲存使用者標記的表。每個條目包含一個聯絡ID、一個標記和一個標記類型。您只需要檢索與搜尋表單中指定的全部標記相符的那些聯絡ID。
您提出的查詢,在其中使用具有相同列名的多個條件,將傳回沒有結果,因為SQL將其解釋為單一條件。為了克服這個問題,您可以採用以下兩種方法之一:
方法一:使用GROUP BY和HAVING
這種方法涉及按聯繫ID分組結果,然後檢查匹配搜尋條件的不同標記的數量是否等於指定的標記數量。
<code class="language-sql">SELECT contact_id FROM your_table WHERE flag IN ('Volunteer', 'Uploaded', ...) GROUP BY contact_id HAVING COUNT(*) = 2 -- // 必须与WHERE flag IN (...)列表中的数量匹配</code>
方法二:使用連接
此方法涉及為每個條件建立多個連接。
<code class="language-sql">SELECT T1.contact_id FROM your_table T1 JOIN your_table T2 ON T1.contact_id = T2.contact_id AND T2.flag = 'Uploaded' -- // 如果需要,可以添加更多连接 WHERE T1.flag = 'Volunteer'</code>
方法的選擇取決於標記的數量和預期的匹配數量。對於具有少量匹配的長標記列表,第一種方法(GROUP BY和HAVING)可能會更快。但是,對於具有許多匹配的較短標記列表,第二種方法(連接)可能會表現更好。
以上是如何選擇同一列上滿足多個條件的SQL記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!