是否有一个Mysql函数来查看是否有一个结果或多个MySQL查询结果?

时间:2016-07-15 18:01:48

标签: mysql

我们正在编写代码以匹配提交给人们。鉴于名字,姓氏等,我们尝试缩小到一个结果。但是,地址或其他联系信息的提交可能拼写错误,因此我们希望尽可能匹配一些标准 - 因此找到匹配的步骤很多。

这是算法:

Count by first name and last name
if count == 1 // done

if count > 1, count by first name, last name, email
if count == 1 // done

// etc.

告诉我们是否会获得一个人的结果或者没有给出查询的最佳方式是什么?

显而易见的答案只是计算,但这是不必要的,因为我们不需要数字,我们只需要看看它是复数结果还是单数结果(匹配可能已经足够糟糕以返回数千) 。另一个选择是限制为2个结果,这可以最大限度地减少计数,但会增加一些令人困惑的代码(如果它也受到限制,为什么要计数呢?)

有没有首选的方法呢?

1 个答案:

答案 0 :(得分:1)

MySQL没有能够告诉您是否有1场或更多场比赛的功能。 正如您所说,您的选择是count(*)或使用LIMIT 2

LIMIT选项应该更快执行,但我会假设两者之间的性能差异并不大。 这是您应该在实际数据上验证的内容,当然您应该在(first_name, last_name)上有索引。

在这种情况下,您可以通过运行单个查询来保存第二个查询:

SELECT first_name, last_name, email
FROM users
WHERE first_name = 'foo'
AND last_name = 'bar'

然后,在您的代码中,您可以轻松获得结果计数。

如果1 - >;你懂了。

如果更多 - >您已经在结果集中使用了该电子邮件,并且可以使用它来过滤您需要的记录。