2012-09-18 77 views
0

我在其中一人是國家,他們的名字和姓氏搜索的搜索系統上工作的工作。對於我使用的第一個和最後一個名字concat,但使用它進一步和條件似乎不工作。我的查詢是sql查詢不CONCAT

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

在上面if if is use the query without「and」it works。但我需要指定更多的條件,如果我只是使用和沒有concat,也適用。

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

如何使它與兩個concat進一步and condition我想申請工作。

回答

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' 
+0

只要您知道影響(不使用索引)或者計算常量(愚蠢示例:'DATE(NOW())'),'WHERE'子句中的函數都可以。 –

+0

@AlainCollins對於我來說,在查詢調優中沒有使用索引似乎是一個明顯的禁忌。 – Kermit

+0

不工作,我嘗試 –

1

,並具有比或更高的優先級,所以你需要將你的報表更加符合邏輯。

喜歡的東西:

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

應該工作。

+0

不工作,我試過 –

+0

你的想法進一步幫助我使它更加靈活。謝謝 :) –