2013-07-31 56 views
0

在這種情況下,我想查找所有包含名稱史蒂夫在一列中的記錄和在另一列中包含名稱史蒂夫的[email protected]。我知道我在想念一個運營商,但我不知道這匹配語句間隔詞返回來自多列的結果

  SELECT firstname,lastname,middlename,company_name, 
        primary_emailaddress,alternate_emailaddress,personal_address_line1, 
        personal_address_line2,personal_address_city,facebook_username, 
        twitter_username,googleplus_username,linkedin_username, 
        personal_website_url,birthday_month,notes,personal_address_zipcode, 
        company_address_zipcode,home_phonenumber,company_phonenumber, 
        cell_phonenumber,birthday_day,birthday_year,hash,image_file 
      FROM contacts 
      WHERE (
       MATCH(
        firstname,lastname, 
        primary_emailaddress,alternate_emailaddress,personal_address_line1, 
        personal_address_city,company_name, 
        company_address_line1,company_address_city, 
        facebook_username,twitter_username,googleplus_username,linkedin_username, 
        personal_website_url 
       ) 
       AGAINST ('Steve [email protected]' IN BOOLEAN MODE)) 
+0

只是可以肯定:「史蒂夫」的「[email protected]」可能出現在任何* *列?!?這兩個值是否需要出現在不同的列中? –

+0

不,它們也可以出現在同一列 – jkushner

+0

但是「steve」和「[email protected]」可能出現在任何地方(比如說,在「personal_address_city」列中)? –

回答

0

Matchlike比較快。我認爲你可以在where條款做兩次:

 SELECT firstname,lastname,middlename,company_name, 
       primary_emailaddress,alternate_emailaddress,personal_address_line1, 
       personal_address_line2,personal_address_city,facebook_username, 
       twitter_username,googleplus_username,linkedin_username, 
       personal_website_url,birthday_month,notes,personal_address_zipcode, 
       company_address_zipcode,home_phonenumber,company_phonenumber, 
       cell_phonenumber,birthday_day,birthday_year,hash,image_file 
     FROM contacts 
     WHERE MATCH (firstname) AGAINST ('Steve' IN BOOLEAN MODE) > 0 and 
       MATCH (primary_emailaddress, alternate_emailaddress) 
        AGAINST ('[email protected]' IN BOOLEAN MODE) > 0; 
0

除非你真的希望通過各個領域,(即約翰·史蒂文森會被認爲是對「史蒂夫」匹配),你可以做到這一點簡單得多..

select * 
from contacts 

where firstname like '%Steve%' 
and (primary_emailaddress like '%[email protected]%' or alternate_emailaddress like '%[email protected]%')