通过以上讲解和练习,相信大家会发现,在相同的条件下,如果使用AND有结果返回,那么这些结果总是使用OR返回结果的子集。也就是说,在OR的返回结果中,总是含有AND的返回结果。下面我们再通过几个场景帮助大家理解AND和OR。
首先站在AND和OR的角度来看,我们将AND和OR视为两个管道工人:
我是严格谨慎的AND!我的工作是在一根管道内安装双层过滤网。由于每层过滤网都会过滤掉相应的内容,所以我的过滤效果更加透彻!不过更加透彻也意味着产出会更少。
我是有求必应的OR!在相同情况下,我的产出总是多于AND。因为我会在两根管道内分别安装过滤网,然后让通过它们过滤后的水流进同一个水池。请允许我指出,过滤效果更加透彻并不意味着过滤效果更好。因为我和AND对应的是不同的过滤要求。
接着,我们再站在输出行的角度来理解。我们将每一个过滤要求看作一位老师,而表中的每一行数据是一位学生。
使用AND返回的行,就像那些自命不凡的优等生。因为他们要经过所有老师的认可,才能在人群中脱颖而出。
至于使用OR返回的行,他们就没什么值得骄傲的了。因为他们的考核机制会简单许多,只需要得到任意一位老师的青睐,他们就可以“抛头露面”。
好了,相信同学们通过以上场景会对AND和OR有更进一步的理解。那么现在,我们要出一道课间练习题来考考大家:请试着过滤出由罗蒙水产和约瑟夫种植园提供的巴尔干甜豆。