如何编写从两个搜索值返回匹配项的 sql 查询

Posted

技术标签:

【中文标题】如何编写从两个搜索值返回匹配项的 sql 查询【英文标题】:How to write a sql query that returns matches from a two searchvalues 【发布时间】:2019-12-06 14:15:47 【问题描述】:

我正在尝试创建一个搜索功能,用户可以在其中组合两个值来搜索联系人列表中的人。 我希望数据库返回两个值都匹配的 posts

现在我已经尝试这样做了:

input = searchValueA, searchValueB

SELECT *
FROM ContactsList
WHERE lastName LIKE '%searchValueA%'
    OR firstName LIKE '%searchValueA%'
    OR company LIKE '%searchValueA%'
    OR phoneNumber LIKE '%searchValueA%'
        AND lastName LIKE '%searchValueB%'
   OR firstName LIKE '%searchValueB%'
   OR company LIKE '%searchValueB%'
   OR phoneNumber LIKE '%searchValueB%'; 

但这会返回匹配任一搜索值和两者的帖子。我只想获取两个搜索值都匹配的帖子。 我可以重新定义查询以使其执行我想要的操作吗?

【问题讨论】:

【参考方案1】:

我认为您希望在这种情况下使用括号:

WHERE (lastName LIKE '%searchValueA%' OR
       firstName LIKE '%searchValueA%' OR 
       company LIKE '%searchValueA%' OR
       phoneNumber LIKE '%searchValueA%'
      ) AND
      (lastName LIKE '%searchValueB%' OR
       firstName LIKE '%searchValueB%' OR
       company LIKE '%searchValueB%' OR
       phoneNumber LIKE '%searchValueB%'
      );

【讨论】:

以上是关于如何编写从两个搜索值返回匹配项的 sql 查询的主要内容,如果未能解决你的问题,请参考以下文章

sql匹配另一张表,匹配不到返回原值

如何在全文搜索中匹配三个值/关键字?

Laravel 搜索数据库表以从查询中进行部分匹配

SQL JOIN 查询返回我们在连接表中没有找到匹配项的行

检查两个唯一值,sql

如何从 Access 2010 中的 SQL 存储过程返回多个记录集