having可以和and连用嘛MySQL_在MySQL中使用HAVING和WHERE子句之间的“OR”?

我试图使用一个简单的使用提交字段在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’和类似的东西.

解决方法:

做一个子查询:

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%'

标签:sql,mysql,search

来源: https://codeday.me/bug/20191008/1870720.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值