2013-07-31 53 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]%')