小编典典

在MySQL的HAVING和WHERE子句之间使用“ OR”?

sql

我正在尝试使用一个简单的已提交字段在MySQL中获取记录。更准确地说,用户输入名称(名字或姓氏或全名),服务器应返回匹配的行。

到目前为止,我正在做的事情是这样的:

SELECT * FROM people 
WHERE 
   firstname LIKE '%user_submitted_data%' OR 
   lastname LIKE '%user_submitted_data%'

暂时可以正常工作,但是(显然)当用户提交全名时,该方法将无法正常工作。有没有办法在整个“ WHERE类型条件”和“
HAVING类型条件”之间添加OR?这样,我可以做类似的事情:

SELECT [some fields], CONCAT(firstname, ' ', 'lastname') as fullname 
FROM people 
WHERE 
   firstname LIKE '%user_submitted_data%' OR 
   lastname LIKE '%user_submitted_data%' OR 
   HAVING fullname LIKE '%user_submitted_data%'

我知道我可以拆分原始字符串,但这会产生一些负面影响,因为您必须处理包含诸如“ De Gaule”之类的空格的名称。


阅读 310

收藏
2021-03-23

共1个答案

小编典典

进行子查询:

SELECT [some fields]
FROM
  SELECT firstname, lastname, CONCAT(firstname, ' ', lastname) as fullname
  FROM people) AS tmp
WHERE firstname LIKE '%user_submitted_data%'
OR lastname LIKE '%user_submitted_data%'
OR fullname LIKE '%user_submitted_data%'
2021-03-23