Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql `ORDER BY`更改查询结果,即使要排序的列不在'SELECT'语句中_Sql_Oracle_Group By_Sql Order By - Fatal编程技术网

Sql `ORDER BY`更改查询结果,即使要排序的列不在'SELECT'语句中

Sql `ORDER BY`更改查询结果,即使要排序的列不在'SELECT'语句中,sql,oracle,group-by,sql-order-by,Sql,Oracle,Group By,Sql Order By,我正在看一些oraclepl/SQL视频,我发现一个讨论过的查询对我来说意义不大。特别是,ORDERBY子句的结果如何在结果查询中发挥作用 查看此表结构: 类别 类别标识PK 家长id 名称 显示 show_id PK 类别标识FK 第二幕 地点(FK) 名称 展示日期 价格乘数 以及类别和显示表之间的0到1或多个关系,以便对于任何类别,显示表中可能有0个或多个记录 如果COUNT DISTINCT s.show\U id不是SELECT语句中列出的列/字段,ORDER BY子句如何修改GROU

我正在看一些oraclepl/SQL视频,我发现一个讨论过的查询对我来说意义不大。特别是,ORDERBY子句的结果如何在结果查询中发挥作用

查看此表结构:

类别 类别标识PK 家长id 名称 显示 show_id PK 类别标识FK 第二幕 地点(FK) 名称 展示日期 价格乘数 以及类别和显示表之间的0到1或多个关系,以便对于任何类别,显示表中可能有0个或多个记录

如果COUNT DISTINCT s.show\U id不是SELECT语句中列出的列/字段,ORDER BY子句如何修改GROUP BY子句实现的功能

查询: 这是对否决票的回应:我想解决这个问题,因为我在广泛发布之前已经在董事会和外部搜索了答案。我觉得这个例子涵盖了GROUP BY、SELECT和ORDER BY子句之间大量的基本和重要概念,可能对其他刚刚学习的人有所帮助,因为它是一个足够独特的例子,但足够基本,可以在以后的过程中掌握和应用


谢谢你

COUNT DISTINCT s.show\u id的计算仍然应用于每组c.name,结果行根据它进行排序-它只是不显示在最终结果集中。

COUNT也是一个聚合。因此,在组中不需要,但仍然可以计算;因此,人们习惯于分类。将countDistinct s.show_ID添加到select,您将更轻松地看到它的作用。谢谢!是的,它应该是一个足够明显的项目,可以尝试将countDistinct s.show_ID添加到SELECT。在我的辩护中,我经常试图在头脑中做一些“看起来”简单的事情。这位老师在之前的视频中犯了很多其他错误,所以我最初的预感是打字错误。我非常感谢您的回复。非常感谢您的回复。我猜,如果将“ORDER BY”放在COUNT DISTINCT s.category_id上,那么可以安全地假设结果是相同的:选择c.name,COUNTDISTINCT s.category_id从类别c中选择第一个类别,显示s其中c.category_id=s.category_id按c.name按COUNT DISTINCT s.category_id分组;这是正确的吗?很抱歉设置了格式,注释字段不允许实际帖子的格式自由。@YekatjarinaAljaksandraynaShu不太确定你在问什么-我的回答中详细说明了类似的原因,但在这个查询中,按顺序排列的表达式也出现在选择列表中,所以顺序会更明显。@Yekatjarinaljaksandraynashu实际上我不这么认为。Distinct在这里很重要,尤其是因为您有一对多的联接。countDistinct s.category\u ID可能与countDistinct s.show\u ID的不同类别非常不同show@Mureinik:我理解,如果GROUP BY中的列也在SELECT语句中,则排序将更加明显,但我想说的是,我现在怀疑是错误的,因为始终只有一个不同的类别id,也只有一个不同的顺序id,如果在原始示例/查询中,我们在屏幕上看到这两者之间的结果在视觉上并不重要。实际上,可能是这样,因为这取决于哪个show_id首先出现在表中。是吗?此外,我还想补充一点,我打算在设置数据库之后,通过在数据库中运行这些来验证结果。谢谢大家的见解和解释。这是相当有帮助的。
SELECT c.name, COUNT(DISTINCT s.category_ID) "First Categories"
FROM category c, show s
WHERE c.category_id = s.category_id
GROUP BY c.name
ORDER BY COUNT (DISTINCT s.show_id);