只有在有订单先例的查询中获取第一个匹配项?

时间:2009-05-20 17:20:03

标签: mysql

我有一个包含字段id(主键),name1,name2和昵称的表。

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

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

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

感谢。我在C ++和mysql ++中这样做。

1 个答案:

答案 0 :(得分: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条Bob记录,只是为了向您显示其中一条。