在同一列上使用多个匹配条件选择记录
在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中文网其他相关文章!