1. 程式人生 > >使用group by分組之後子查詢的order by排序失效的問題

使用group by分組之後子查詢的order by排序失效的問題

需求:

1.首頁的查詢需要按照lrsj進行排序

2.每一條資料通過fchrq,chxh進行分組

原始的sql

	SELECT  fchrq,chxh FROM
		(SELECT top 100 percent chxh,fchrq,lrsj FROM HCZZQD_source where chxh  is not null 
			<include refid="resultWhereSqlv2" />
		 ORDER BY lrsj desc) T
		GROUP BY fchrq,chxh

按照正常邏輯貌似沒錯,子查詢中是按照錄入時間進行了排序,查詢是使用group by進行了分組;

在使用分頁外掛後,應該是可以獲取到資料的;

實際上確實獲取到了資料,但是order by lrsj並沒有生效,取出來的資料只是group by進行了分組;

方案一:<mission false>

top 100 percent 是取查詢出來的所有資料,網上的偏方: top 100 percent 改為 top 99.999 percent 原理我並沒有理解,但是對我的sql並沒有生效,我不知道這個改動的適用範圍

方案二:<mission success>

實際上很簡單的sql,sql會對資料先進行分組在進行排序,而我上述寫法是先排序再分組,之所以還這樣寫是因為分組的時候fchrq ,chxh 裡面不包含lrsj.

所以我走進了誤區:我的子查詢好像只能獲取欄位fchrq,chxh.並不能獲取lrsj, 然而事實上並不是

百度失敗後,盯著sql突然想到了,按照group by進行分組確實不能直接獲取到lrsj,因為是兩個lrsj,可是我可以獲取第一排資料的lrsj也就是max(lrsj);

於是改動成功:

          SELECT fchrq,chxh FROM HCZZQD_source where chxh  is not null 
		<include refid="resultWhereSqlv2" />
	 group BY fchrq,chxh
	 ORDER by max(lrsj) desc

不需要子查詢,直需要查詢這個表一次即可;

相關推薦

使用group by分組之後查詢order by排序失效的問題

需求: 1.首頁的查詢需要按照lrsj進行排序 2.每一條資料通過fchrq,chxh進行分組 原始的sql SELECT fchrq,chxh FROM (SELECT top 100 percent chxh,fchrq,lrsj FROM HCZZQD_so

sql查詢 order by失效問題

一、問題描述  三表聯合查詢  按主表的時間倒敘並分頁   下面sql語句 ORDER BY失效 ,如果把 ORDER BY  放在最後 比如有20條資料 第一頁會是10 -1 第二頁是20-11  分頁不正確   查詢資料發現:在my

07-Hive高階查詢order bygroup by

宣告:未經本人允許,不得轉載哦! 哈嘍,大家好。這兩天就要高考了,我原本是一名物理老師,這一屆初高中的學生帶完,估計就要開始找大資料崗位的工作了。目前掌握的是技能有java+linux++mysql+hadoop+hive+hbase,正在學習的是shell,計劃2016年接著要學習

1. 安裝Oracle,配置環境 2. 實現查詢From子句 3. 實現查詢where子句 4. 實現查詢order by子句

不可 所有 ear sql文件 是否 階段 dna cls 數學運算 一、環境安裝1. 登錄:以管理員身份登錄 sqlplus 登錄名/密碼 管理員身份登錄:sqlplus system/1234562. 登錄後,導入案例。下載scott.sql文件,執行下面一行的命令 S

mysql查詢order by 指定欄位排序

  當MySQL查詢時排序的欄位不是數字時而是漢字的時候也可以用when  then 來指定排序。   列如yewu_check表的status 欄位不是0,1,2而是漢字待辦,已辦,退回。可以如下寫法: SELECT * FROM yewu_check  OR

SQL的聚合函式、分組查詢及組合查詢用法

聚合函式: SQL中提供的聚合函式可以用來統計、求和、求最值等等。 分類: –COUNT:統計行數量 –SUM:獲取單個列的合計值 –AVG:計算某個列的平均值 –MAX:計算列的最大值 –MIN:計算列的最小值 首先,建立資料表如下:

學習筆記day64-----oracle-sql標準的表連線、集合運算、函式和分組查詢、表操作

1、sql標準中的表連線 1.1、內連線 語法: select 欄位列表 from 表1 [inner] join 表2 on 關聯條件; --三表

SQL語句聚合函式、分組查詢及組合查詢

執行列、行計數(count): 標準格式 SELECT COUNT(<計數規範>) FROM <表名> 其中,計數規範包括: - * :計數所有選擇的行,包括NULL值; - ALL 列名:計數指定列的所有非空值行,如果不寫,預設為ALL; - DISTINCT 列名:計數

SQL優化之一則MySQL中的DELETE、UPDATE 查詢的鎖機制失效案例

關注“資料和雲”,精彩不容錯過前言開發與維護人員避免不了與 in/exists、not in/n

MongoRepository中的一些查詢集合方法排序失效問題

最近工作中用到mongoDb,使用了MongoRepository,類似於jpa,但是需求中需要用一個userId集合查詢一個對應的使用者物件集合,使用了 userRepository.findByUserIdIn(List<UserIds>),此時結果是查出來了,但是之前進行排的

Mysql5.7版本group by 查詢order by 無效的問題解決辦法

我們都知道group by 會選擇保留第一條資料,預設是按照id排序的,如果我們想通過別的欄位排序,比如最後建立的那條記錄,可以先按照建立時間降序,再group by即可得到每個分組的最新建立的資料。 例: 通過如下sql查出兩條資料 SELECT * FROM xxx WHERE gr

MySQL——關於MySQL分組查詢group byorder by獲取最新時間內容的方法

假如現在有一張表table,如下: 如果我們想查詢出來zhang和wang最新日期的記錄 如果我們直接使用: SELECT * FROM table GROUP BY name ORDER BY

sql 異常<除非另外還指定了 TOP、OFFSET 或 FOR XML,否則,ORDER BY 子句在視圖、內聯函數、派生表、查詢和公用表表達式中無效。>

select sel top percent 異常 子句 cor 查詢 表達 問題:當子查詢內存在ORDER BY 字句時查詢會報錯 SQL: SELECT * FROM (   SELECT * FROM USER ORDER BY USER_CORD ) S. 解

Group by 分組查詢 實戰

男女 img 通過 ont rom 出現的次數 是我 實現 一起 實戰經歷,由於本人在共享單車上班,我們的單車管理模塊,可以根據單車號查詢單車,但是單車號沒有設置unique(獨一無二約束),說以這就增加了單車號可能重復的風險,但是一般情況下,單車號是不會重復的,因為平

Mysql5.7中子查詢order bygroup by合用無效的解決辦法

tro group by blog gpo html size 查詢 mysql 參考資料 環境說明: Windows10 專業版64位 MySQL5.7.20 《2015年辛星mysql教程第一本基礎操作》 P65 原文: 實踐內容: 上面的SQL語句沒

MySQL Crash Course #06# Chapter 13. 14 GROUP BY. 查詢

idt rom pla most con height bsp them 找到 索引 理解 GROUP BY 過濾數據 vs. 過濾分組 GROUP BY 與 ORDER BY 之不成文的規定 子查詢 vs. 聯表查詢 相關子查詢和不相關子查詢. 增量構造復雜

SQL group by分組查詢

create server insert 一定的 ID all 註意 至少 滿足 本文導讀:在實際SQL應用中,經常需要進行分組聚合,即將查詢對象按一定條件分組,然後對每一個組進行聚合分析。創建分組是通過GROUP BY子句實現的。與WHERE子句不同,GROUP BY

查詢內存在ORDER BY 字句時查詢會報錯

問題: highlight div 數據 order use 解決辦法 內存 true 問題:當子查詢內存在ORDER BY 字句時查詢會報錯 SQL: SELECT * FROM (   SELECT * FROM USER ORDER BY USER_CORD

資料庫sql語句多表連線查詢+group by分組的使用

參考自:https://blog.csdn.net/fly_fly_fly_pig/article/details/81325116 平時用sql查詢經常遇到的問題,這次搜到了一個博主的文章,解決了問題。但是其中的深層原因還沒有想清楚,本文需要完善。 更正前 CREATE VIE

在mysql中使用group byorder by取每個分組中日期最大一行資料

轉載自:https://blog.csdn.net/shiyong1949/article/details/78482737 自己實際使用的時候group by 單列欄位 兩種方式獲取資料一致,博主情況未知,有待驗證多group by  在mysql中使用group by進行分組後取某一列的最大