MySQL LIKE多字段条件

时间:2018-08-12 16:28:09

标签: mysql jpa spring-data-jpa

我只是想说我是MySql的新手,所以我在这里可能做的很愚蠢。我想按3个字段进行搜索,这是我的查询:

C:\Users\username\AppData\Local\Temp\gen_py\3.6>grep 'known by' *.py
420B2830-E718-11CF-893D-00A0C9054228x0x1x0.py:# This CoClass is known by the name 'Scripting.Dictionary'
420B2830-E718-11CF-893D-00A0C9054228x0x1x0.py:# This CoClass is known by the name 'Scripting.Encoder'
420B2830-E718-11CF-893D-00A0C9054228x0x1x0.py:# This CoClass is known by the name 'Scripting.FileSystemObject'

如您所见,我想按3个字段进行搜索:名字,姓氏和登录名。 我还添加了一些其他条件,例如我希望从特定的学校和状态获得它。

具有3个字段的搜索有效,假设我在搜索中写了“ Sarah”,并获得5个用户,问题是,例如,如果我在过滤器中选择status =“ Confirmed”,则类似于mysql并不关心这一点,尽管他们的学历或身分高低,仍然会返回所有带有字符串“ sarah”的用户。我在这里做什么错了?

如果我仅使用一个Like-ex。只有名字-一切正常...可以在条件中使用3吗?

1 个答案:

答案 0 :(得分:1)

您的OR子句应以()进行包装,以便AND条件可以正常工作

@Query( value = "SELECT * 
            from Parent p 
            WHERE ( p.login LIKE :search 
            OR p.firstName LIKE :search 
            OR p.lastName LIKE :search ) 
            AND p.school = :school AND p.status = :status")