2009-05-20 34 views
1

我有一个表字段id(主键),名称1,名称2和昵称。在有订单先例的查询中只提取第一个匹配项?

给定一个名字,我希望它返回包含三个字段中的任何一个名称的条目;但是,我希望它只返回一个条目,有时候我返回的查询有一个以上的匹配。另外,如果有多个匹配项,我希望它首先返回与name1匹配的匹配项。

这是查询我现在只是给我的一切:

SELECT * FROM table WHERE name1 like "Bob" OR name2 like "Bob" OR nicknames rlike "[,]Bob[,]|[,]Bob$"; 

感谢。我正在用C++和mysql ++来做这件事。

回答

4
SELECT * FROM (
    SELECT * FROM table WHERE name1 like "Bob" limit 1 
    UNION SELECT * FROM table WHERE name2 like "Bob" limit 1 
    UNION SELECT * from table WHERE nicknames rlike "[,]Bob[,]|[,]Bob$" limit 1 
) AS t1 LIMIT 1; 

每一个上的限制1都会阻止数据库拉起50,000条鲍勃记录来向你展示其中的一条。

+0

非常感谢你,这是做到了 – 2009-05-20 17:34:49