2015-11-07 54 views
-3

这些都是我在我的用户表中的字段,我使用的MySQL:如何从三个不同的字段进行搜索,从一个搜索输入

name     
lastName    
surName    

我有一个搜索输入,用户可以把任何名字或全名,但我不知道如何建立一个查询,我很卡住。

我与LIKE语句的变化工作,但没有解决我的问题:

SELECT u FROM User u 
      WHERE u.name LIKE %rocky moon sun% OR u.lastName LIKE %rocky moon sun% OR u.surName LIKE %rocky moon sun% ' 

有什么想法?

+0

我想你用“和”而不是“或” –

+0

在哪些方面做的SELECT你写的东西不能解决你的问题(除了你在所有的'%rocky moon sun%'表达式中缺少引号)? @MuhammadFarrukhFaizy:不,'AND'会要求所有三列都包含值,这不是海报试图做的。 –

+0

@KenWhite但是当你需要所有三个你必须使用和过滤,否则给你,如果所有真正的发现,无论错误列字段 –

回答

0

尝试匹配它们之前,您可以Concat的领域,试试这个

SELECT 
     u 
FROM 
     User as u 
WHERE 
     u.name LIKE %rocky moon sun% 
    OR u.lastName LIKE %rocky moon sun% 
    OR u.surName LIKE %rocky moon sun% 
    OR concat (u.name,' ',u.lastName) like %rocky moon sun% 
+0

谢谢,这正是我一直在寻找!现在我可以评估不仅名字和姓氏,但每个可能的搜索名称的情况下,如果我想挑剔:) –

0

使用表的别名当u必须做的表之间的连接,我不想简单的查询使用表的别名

如果我们要搜索的标识信息使用此查询代替 例如

SELECT id FROM User WHERE name='Rocky moon sun' and lastName='Rocky moon son' and surname='Rock moon son'; 
相关问题