首页 > 试题广场 > 已知 sys_user 表的建表语句如下: 现需获取 18
[不定项选择题]
  • SELECT name,age
      FROM sys_user
      WHERE age<18
      GROUP BY name;
  • SELECT name
      FROM sys_user
      WHERE age<18
      GROUP BY name
      HAVING COUNT(DISTINCT name)>1;
  • SELECT name
      FROM sys_user
      WHERE age<18
      GROUP BY name
       HAVING COUNT(name)>1;
  • SELECT name
      FROM sys_user
      WHERE age<18
      GROUP BY name
      HAVING COUNT(id)>1;
推荐
ABD
  • A选型获取的是所有18岁以下的
  • B选项DISTINCT name用于返回唯一不同的值,与题意重复相悖。
  • D选项统计的是id,和name无关。
编辑于 2019-10-08 14:12:07 回复(0)
1.不知是不是只有我看见了where单词拼写错误,所以按理说应该是选abcd;
2.如果排除单词拼写错误这一因素的话,错误的应该是ab;
3.分析:
    c.可以很容易看出是正确的;
    d.在查询语句上和c只有一处不同;不过因为在前面的查询语句中已经查处了age<18,且按name分过组后的符合条件的语句,加上having是要求还满足有重复名字的数据。所以其实无所谓是id,还是name。或者是count(*)都是返回一样的结果。
只是提出自己的想法,不保证对错。如果不同意这个看法的可以在下面留言说服我(其实也就是讨论)!!!

发表于 2019-10-01 11:57:49 回复(2)
正确的是C ,楼上两位大佬解释的非常到位!
发表于 2019-09-28 07:00:06 回复(0)
眼见为实
A
B
C
D
由此重要可以看出C、D都可以得到结果,而要纠结的是D,为什么也可以
换一个方法   
先SELECT id,name
  FROM sys_user
  WHERE age<18;

SELECT name
  FROM sys_user
  WHERE age<18
  group by name
  having count(id)>1;
先找出年龄小于十八岁的人,按照姓名分组,如果姓名重复,count(name),count(*),count(id) 都会大于1可以筛选处理,故我的选择是AB ,若有其他数据可以进行反证,可以评论学习。
发表于 2019-10-05 14:03:20 回复(0)
ABD
首先确定题目要求:
    1. age < 18;
    2. count(name) >1;
    3.错误语句
A. 里包含有不重复姓名的, 错误;
B. DISTINCT是唯一,且查寻结果中也必须包含这一项, 错误;
D. 是姓名重复,而非id, 错误。
故 选择:    ABD
发表于 2019-09-28 09:26:45 回复(0)
abd
a只是查询所有数据,然后根据name分组,这样查出来所有名字的数据
b查询的是年龄大于18且有重复名字的数据
c是正确的的
d查询的是根据名字分组且重复id大于1的

发表于 2019-09-27 20:09:23 回复(0)