0

我正在研究一个搜索系统,在该系统中,一个人按国家及其名字和姓氏进行搜索。对于我使用的名字和姓氏,concat但在进一步和条件下使用它似乎不起作用。我的查询是

select * from users_profile where CONCAT(fname,' ',lname) like '%v %'
or Email like '%v %' AND country='india'

在上面,如果 ise 使用不带“and”的查询,它就可以工作。但我需要指定更多条件,如果我只是使用并且不使用concat它也可以。

select * from users_profile where CONCAT(fname,' ',lname) like '%v %'
or Email like '%v %'

如何使它适用于两者concat 以及and condition我想进一步申请。

4

2 回答 2

1

您不应该使用CONCAT,更不用说WHERE列周围的任何功能了。此外,您应该指定一个列列表,而不是SELECT *. 还要检查您的标准顺序。

你可以尝试这样的事情:

SELECT fullname, Email, country
FROM
    (SELECT CONCAT(fname, ' ', lname) AS fullname, Email, country FROM users_profile) a
WHERE (a.fullname LIKE '%v %' OR Email LIKE '%v ') AND country = 'india'
于 2012-09-18T20:32:03.450 回答
1

AND 的优先级高于 OR,因此您需要对语句进行更合乎逻辑的分组。

就像是:

select * from users_profile where (CONCAT(fname,' ',lname) like '%v %'
or Email like '%v %') AND country='india'

应该管用。

于 2012-09-18T20:32:24.160 回答