我有一个包含字段id(主键),name1,name2和昵称的表。
给定一个名称,我希望它在三个字段中的任何一个字段中返回包含该名称的条目;但是,我希望它只返回一个条目,有时我的查询返回多个匹配。此外,如果有多个匹配项,我希望它首先返回与name1匹配的匹配项。
这是我现在的查询,它只给了我一切:
SELECT * FROM table WHERE name1 like "Bob" OR name2 like "Bob" OR nicknames rlike "[,]Bob[,]|[,]Bob$";
感谢。我在C ++和mysql ++中这样做。
答案 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记录,只是为了向您显示其中一条。