比方說,我創建3個表如下...不是所有的數據從MySQL查詢回來
create table `users` (`username` varchar(20), `other_non_relevant_field` varchar(20));
insert into `users` values
("Bob","blah blah blah"),
("Steve","blah blah blah"),
("Sue","blah blah blah"),
("Adam","blah blah blah");
create table `table_1` (`username` varchar(20), `field_abc` varchar(20), `field_def` varchar(20), `other_non_relevant_field` varchar(20));
insert into `table_1` values
("Steve","blue","brown","blah blah blah"),
("Sue","yellow","brown","blah blah blah"),
("Sue","pink","brown","blah blah blah"),
("Adam","green","brown","blah blah blah");
create table `table_2` (`username` varchar(20), `field_ghi` varchar(20), `field_jkl` varchar(20), `other_non_relevant_field` varchar(20));
insert into `table_2` values
("Bob","spoon","fork","blah blah blah"),
("Bob","knife","spork","blah blah blah"),
("Steve","spoon","knife","blah blah blah"),
("Sue","spoon","fork","blah blah blah"),
("Sue","knife","spork","blah blah blah"),
("Adam","fork","knife","blah blah blah");
,然後我運行此查詢...
SELECT users.username,
table_1.field_abc, table_1.field_def,
table_2.field_ghi, table_2.field_jkl
FROM users
JOIN table_1 ON table_1.username = users.username
JOIN table_2 ON table_2.username = users.username
WHERE
table_1.field_abc REGEXP "(spork|pink)" OR
table_1.field_def REGEXP "(spork|pink)" OR
table_2.field_ghi REGEXP "(spork|pink)" OR
table_2.field_jkl REGEXP "(spork|pink)"
ORDER BY
(
(CASE WHEN table_1.field_abc LIKE "%spork%" THEN 1 ELSE 0 END) +
(CASE WHEN table_1.field_abc LIKE "%pink%" THEN 1 ELSE 0 END) +
(CASE WHEN table_1.field_def LIKE "%spork%" THEN 1 ELSE 0 END) +
(CASE WHEN table_1.field_def LIKE "%pink%" THEN 1 ELSE 0 END) +
(CASE WHEN table_2.field_ghi LIKE "%spork%" THEN 1 ELSE 0 END) +
(CASE WHEN table_2.field_ghi LIKE "%pink%" THEN 1 ELSE 0 END) +
(CASE WHEN table_2.field_jkl LIKE "%spork%" THEN 1 ELSE 0 END) +
(CASE WHEN table_2.field_jkl LIKE "%pink%" THEN 1 ELSE 0 END)
)DESC;
爲何不返回鮑勃的條目中有「spork」嗎? 你可以看到這個查詢在行動http://sqlfiddle.com/#!2/cbbda/5
不言而喻,這不是我的實際代碼,但它是相似的,有相同的問題,我可以找出我的問題。
可能需要更改您的JOIN類型 – 2013-04-11 20:41:15