关于本小节中,count(id) >= 2;的测试!!!
以下面的数据表为例:
注意表中sex列, 其中值为NULL的有2个,值为0的有3个,值为2的有1个,值为3的有1个。
上面这步很重要!!接着我们来测试一下:
当 count(id) >= 1 时:
当 count(id) >= 2 时:
当 count(id) >= 3 时:
当 count(id) >= 4 时:
由此可见, count(id) >= 2 输出的结果跟id毫无关系! 它只跟set列中具有相同值的个数有关,
值为NULL的有2个,值为0的有3个,值为2的有1个,值为3的有1个
当 count(id) >= 1 时, 输出的是NULL,0,2,3。因为他们的数目都满足>=1
当 count(id) >= 2 时, 输出的是NULL,0。因为他们对应的数目分别为2和3,都满足>=2
当 count(id) >= 3 时, 输出的是0, 因为值为0的个数为3,满足>=3
当 count(id) >= 4 时, 没有输出。因为没有满足条件的元素。
这问题让我纠结的半个小时,看了一些慕友的问答后,更是把我搞糊涂了,说什么输出的是非NULL值,还有说什么跟id有什么什么关系。经过测试,输出的结果只跟set列具有相同的值的个数有关系,跟是不是NULL没关系,跟id也没关系。
你可以把count(id) >= 2 改成count(username) >= 2或者改成count(age) >= 2或者改成count(password) >= 2,输出的结果都是一样的,老师的一个无意之举,本没有什么特别的含义,结果却引得众慕友们胡乱猜测。为了让还没有搞明白的慕友们,在这个问题上少绕些弯子,就写了这么一些东西,如果有什么不对的地方,欢迎各慕友指点。。