MYSQL HAVING和WHERE有条件

时间:2019-04-29 07:16:43

标签: mysql

我有一个带有列的user_table

  • 名字
  • 姓氏
  • contact_number

对于自动完成的用户界面,用户可以自由搜索任何内容。

我想允许用户通过全名以及带有类似查询的contact_number进行搜索。

我写的查询就像

select CONCAT(u.first_name ,' ', u.last_name) as full_name, contact_number from user_table u where contact_number like '%value%' HAVING full_name like '%value%';

它不起作用,因为contact_number和full_name的值都相同。如果我删除contact_number或Haveing close,那么无论哪种情况它都可以工作。我无法将OR子句放在位置和位置之间。

2 个答案:

答案 0 :(得分:1)

如帖子中所述

  

我想允许用户通过全名以及带有类似查询的contact_number进行搜索。

如果要使用ORWHERE进行搜索,则可以在contact_number子句中使用full_name运算符

 select CONCAT(u.first_name ,' ', u.last_name) as full_name 
 from user_table u 
 where contact_number like '%value%' 
       OR CONCAT(u.first_name ,' ', u.last_name) like '%value%';

 select CONCAT(u.first_name ,' ', u.last_name) as full_name 
 from user_table u 
 where contact_number like '%value%' 
       OR u.first_name like '%value%'
       OR u.last_name like '%value%';

答案 1 :(得分:0)

select CONCAT(p.first_name ,' ', p.last_name) as full_name, contact_number from user_table p HAVING full_name like '%Nimesh S%' or contact_number like '%Nimesh S%';

select CONCAT(p.first_name ,' ', p.last_name) as full_name, contact_number from user_table p HAVING full_name like '%888%' or contact_number like '%888%';

或[通用查询]

select CONCAT(p.first_name ,' ', p.last_name) as full_name, contact_number from user_table p HAVING full_name like '%value%' or contact_number like '%value%';