sql - 在不使用临时表的情况下从 SELECT 中隐藏按列排序

标签 sql select sql-order-by distinct

好吧,我知道我们可以通过使用临时表从 select 语句中隐藏按列排序。只是想知道如何在不使用临时表的情况下做同样的事情

由于我正在使用的数据库非常庞大,因此添加临时表会极大地影响查询性能。

我的查询如下:

SELECT DISTINCT
  Col1,
  MAX(Col2),
  MAX(Col3),
  Col4
FROM 
  Table1
Group By
  Col4,
  Col1
Order By
  Col4

现在我只想在不使用临时表的情况下从输出中删除 Col4。甚至不能使用内部查询来做到这一点。谢谢。

最佳答案

如果您的 Col4 是计算/派生的并且它必须在原始选择中,您可以简单地进行一个外部查询:

SELECT G.Col1, G.C2, G.C3 from
(SELECT DISTINCT
  Col1,
  MAX(Col2) AS C2,
  MAX(Col3) AS C3,
  Col4
FROM 
  Table1
Group By
  Col4,
  Col1
Order By
  Col4) AS G

关于sql - 在不使用临时表的情况下从 SELECT 中隐藏按列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27284803/

相关文章:

mysql - 如何在 MySQL 的 instr() 中使用区分大小写?

MySQL LIKE...结果优先排序

mysql - 在 MySQL 中创建过程时如何使 ORDER BY 工作?

sql - 如何在多列的唯一索引中允许一列为 NULL 值

MySQL 更快的 INSERT

c# - htmlagilitypack 选择节点返回空

php - Codeigniter:按日期升序排列

mySQL:如何处理3个不同的表,引用每个表中的不同列但使用主键

java - 将原始 sql 查询映射到 DTO 对象 Spring

json - jq 忽略 else 子句