首先我想说我是MySql新手,所以我可能在这里做了一些非常愚蠢的事情。我想按3个字段进行搜索,以下是我的查询:
@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")
如您所见,我想按3个字段搜索:firstName、lastName和login。
我还添加了一些其他条件,比如我想从一个特定的学校和地位。
使用3个字段的搜索可以工作,假设我在搜索中写入“Sarah”,然后我返回5个用户问题是,例如,如果我在过滤器中选择status=“Confirmed”-看起来mysql不关心这个问题,并且仍然返回所有包含字符串“Sarah”的用户,不管他们的学校或状态如何。我在这里做错什么了?
如果我只使用一个Like-ex.only firstName-一切都很完美。。。有条件的话可以用3吗?
最佳答案
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")