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

Mysql 为什么在更改WHERE语句的格式时会得到不同数量的结果?,mysql,scripting,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中的一个

我正在编写一个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有20000多个条目,B有160多万个条目),因此手工检查所有数据的完整性并不是特别实用。我对SQL相当陌生,因此我非常感谢您提供任何有关为什么会发生这种情况以及如何获得准确结果的信息或建议。

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


你可以试着把它们加进去,或者你可以用一种简写的方法是
和B.notes in('apple','aple','appl')
我想这是因为在一种情况下,你在'aple'和'appl'前面都有一个
LIKE
关键字,但在另一种情况下你没有


您可以尝试将它们添加到中,或者您可以用一种简写方式编写它,即
和B.notes in('apple','aple','appl')
或'aple'
本身就是一个条件,返回false。就像
或'appl'
一样,您的
where
简化为
where B.type=1和B.notes如'apple'
也值得注意的是,没有通配符的
=/code>相同。但如果我的where在后一个脚本中简化,那通常不应该导致行数减少吗?由于我使用的是
,我的理解是,我将从上述三种变体中获得结果。我在上面编辑了通配符。(我的脚本中有它们,但它们在翻译中丢失了。哎呀!)是的,你应该得到更少的结果。如果通配符在翻译过程中丢失了,那么向我们提供完全更改的通配符可能也是明智的。(另一件值得注意的事情是,在第一个查询中不需要左连接。)完全更改的连接与我的原始脚本相同,或者只是在我的问题中写出两个脚本?
或“aple”
本身就是一个条件,返回false。就像
或'appl'
一样,您的
where
简化为
where B.type=1和B.notes如'apple'
也值得注意的是,没有通配符的
=/code>相同。但如果我的where在后一个脚本中简化,那通常不应该导致行数减少吗?由于我使用的是
,我的理解是,我将从上述三种变体中获得结果。我在上面编辑了通配符。(我的脚本中有它们,但它们在翻译中丢失了。哎呀!)是的,你应该得到更少的结果。如果通配符在翻译过程中丢失了,那么向我们提供完全更改的通配符可能也是明智的。(另一件值得注意的事情是,在第一个查询中不需要左连接。)完全更改的是我的原始脚本,或者只是在我的问题中写出两个脚本?当我尝试在
中使用
时,它返回了0行。如果我错了,请纠正我,但我认为
中的
主要处理数值?至于没有像
这样的
关键字,是否有可能导致更多行而不是给出错误的原因?我认为这会导致某些行重复,但我不确定是哪些行,或者为什么。当我尝试在
中使用
时,它返回了0行。如果我错了,请纠正我,但我认为
中的
主要处理数值?至于没有像
这样的
关键字,是否有可能导致更多行而不是给出错误的原因?我想这会导致一些行重复,但我不确定是哪一行,或者为什么。