首页 > 试题广场 >

则以下语句的结果是() SELECT ID_P,ID_C,L

[单选题]
则以下语句的结果是()
SELECT ID_P,ID_C,LASTNAME,FIRSTNAME
FROM PERSONS
ORDER BY VALUE(ID_P,3),VALUE(ID_C,0)DESC;
  • NULL,3,小军,孙
     2,NULL,小永,钱
     2,4,小芳,李
     1,2,小洋,赵
     1,1,小明,张
  • NULL,3,小军,孙
     2,4,小芳,李
     2,NULL,小永,钱
     1,2,小洋,赵
     1,1,小明,张
  • 1,2,小洋,赵
     1,1,小明,张
     2,NULL,小永,钱
     2,4,小芳,李 
     NULL,3,小军,孙
  • 1,2,小洋,赵
      1,1,小明,张
      2,4,小芳,李 
      2,NULL,小永,钱
      NULL,3,小军,孙
order by 默认排序是升序排列
发表于 2020-03-21 08:34:02 回复(0)
连题目都没有
发表于 2021-09-22 20:35:26 回复(2)
从数据库中查询的结果首先按ID_P升序排序,然后按ID_C降序排序。ID_P为NULL时,则ID_P=3;当ID_C为NULL时,则ID_C=0。
因此,选择D
发表于 2019-07-17 22:36:20 回复(0)

一、分析

本题关键点在于 ORDER BY 子句中有多个属性列时,查询结果的排序规则。

排序规则:先按第一个属性列排序,当查询结果中第一个属性列的值相同时,再按第二个属性列排序。

注意:不是先按第一个属性列排序,再按第二个属性列排序。而是按第一个属性列排序后属性列值相同的记录,再按第二个属性列排序。

二、解题

  1. 以上5条记录 ORDER BY 子句中的值分别为:

    VALUE(ID_P,3) VALUE(ID_C,0)
    3 3
    1 1
    1 2
    2 0
    2 4
  2. 先按第一个属性列排序。因为第一个属性列未指定排序规则,所以使用默认排序规则 ASC,即升序排列。

    结果:②③④⑤①

  3. 第一个属性列值相同的记录再按第二个属性列值排序。
    第一次排序得到的结果中:②、③第一个属性列值相同,都等于1,④、⑤第一属性列值相同,都等于2;又因为第二个属性列指定排序规则 DESC,所以再按第二个属性列降序排序。

    结果:③②⑤④①

    故选D。

发表于 2020-10-11 19:53:11 回复(2)
这是什么鬼题目?题呢?
编辑于 2021-09-22 09:31:57 回复(0)
不应该是降序排列吗?

发表于 2019-08-19 21:43:31 回复(5)
好家伙,做个题,还得自己加题干
发表于 2021-09-16 23:40:03 回复(0)
  按照id-p升序排列后是:11小明张,12小羊赵,2null小永钱,24小芳李,33小军孙 按照idc降序后是:12小杨赵,11小明张,2null小永钱,24小芳李,33小军孙
发表于 2020-08-13 12:02:01 回复(1)
我看不到问题
发表于 2022-03-04 10:12:08 回复(0)
asc 是升序
desc 是降序,我们把desc堪称decrease 就是减少
编辑于 2024-02-23 21:20:48 回复(1)
value里的3是默认值的意思,为null当默认值处理
发表于 2022-07-20 16:42:06 回复(0)
desc 不是降序吗
发表于 2022-05-03 19:05:58 回复(1)
应该是考null的特性吧
发表于 2022-04-01 17:05:46 回复(0)
终于有一个不会做的理由了
发表于 2022-02-28 14:56:49 回复(0)
没题目也可以自圆其说。。。。。
发表于 2021-12-21 22:15:19 回复(0)
两个字段都是降序吧,答案有问题
发表于 2020-07-24 11:57:46 回复(1)