当我更改WHERE语句的格式时,为什么会得到不同数量的结果?

时间:2015-09-01 20:37:31

标签: mysql scripting

我正在编写一个SQL脚本(在MySQL Workbench中,如果相关的话),它涉及在我的数据中查找相同字符串的变体。这样,即使拼写错误,我也能获得准确的拉动。脚本是这样的:

SELECT A.Name, A.ID
FROM A
LEFT JOIN B on B.ID = A.ID
WHERE B.type = 1
AND (
B.notes LIKE '%apple%'
OR B.notes LIKE '%aple%'
OR B.notes LIKE '%appl%'
)

因为表A中的单个条目可以链接到表B中保留的几个不同的注释,如果一个人的注释包含“apple”而另一个注释“appl”,则它们应该显示两次,这很好。运行此脚本后,我返回了9627行。

我尝试了相同的脚本,但将WHERE更改为:

WHERE B.type = 1
AND (B.notes LIKE '%apple%'
OR '%aple%'
OR '%appl%')

现在我有9929行。

这两个不同的WHERE子句的功能是否有所不同,因为我在第二个中省略了B.notes?我正在处理大型数据集(A有超过20,000个条目,B超过160万个)因此,手动检查所有数据的完整性并不是特别实用。我对SQL很新,所以我感谢任何关于为什么会发生这种情况以及如何获得准确结果的信息或建议。

1 个答案:

答案 0 :(得分:0)

我认为这是因为在一个案例中,您在“aple”和“appl”之前都有一个LIKE关键字,但在另一种情况下则没有。

您可以尝试添加这些内容,或者以简写方式编写它的一种方式是AND B.notes IN ('apple', 'aple', 'appl')

相关问题