首页 > 解决方案 > MYSQL HAVING 和 WHERE 条件

问题描述

我有一个带有列的 user_table

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

我想允许用户通过 full_name 和 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 或 Have close 那么部分它适用于任何一种情况。我无法将 OR 子句放在 where 和 have 之间。

标签: mysql

解决方案


如帖子中所述

我想允许用户通过 full_name 和 contact_number 进行类似查询的搜索。

如果要使用and进行搜索,可以在如下子句中使用OR运算符WHEREcontact_numberfull_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%';

推荐阅读