在實際業務中,有一些場景需要對一組列表資料先分組後然後組內排序
,這時不能單純的使用傳統的group by
和order by
語句了,因為會提示***x欄位必須在group by聚合函式中
,為了解決此問題,我們可以使用row_number ( ) over ( partition by 分組字段 order by 排序字段 desc
語句。
需求:根據建立人分組後再按照建立時間降序排序
1、使用傳統的group by
和order by
語句
select
*from
"tbblayeritem"
where
layerid =
'b5ee3362-5972-4d48-bcf5-828023ca665b'
group
by creator
order
by createtime desc
提示錯誤
錯誤: 字段 "tbblayeritem.itemid" 必須出現在 group
by 子句中或者在聚合函式中使用
2、使用row_number ( ) over ( partition by 分組字段 order by 排序字段 desc
語句
select*,
row_number (
)over
(partition
by creator order
by createtime desc
)from
tbblayeritem
where
layerid =
'b5ee3362-5972-4d48-bcf5-828023ca665b'
結果使用 zebra 對資料庫表進行水平拆分
zebra 是美團點評開發的資料庫訪問層中介軟體,維護在 github meituan dianping zebra zebra是乙個基於jdbc api協議上開發出的高可用 高效能的資料庫訪問層解決方案,是美團點評內部使用的資料庫訪問層中介軟體。具有以下的功能點 zebra 的 quickstar...
sql語句對資料庫表進行加鎖和解鎖
鎖是資料庫中的乙個非常重要的概念,它主要用於多使用者環境下保證資料庫完整性和一致性。我們知道,多個使用者能夠同時操縱同乙個資料庫中的資料,會發生資料不一致現象。即如果沒有鎖定且多個使用者同時訪問乙個資料庫,則當他們的事務同時使用相同的資料時可能會發生問題。這些問題包括 丟失更新 髒讀 不可重複讀和幻...
對資料庫進行操作
對資料庫進行操作 一 ddl 資料庫定義語言 對資料庫 表結構進行操作 建庫 建表 修改表結構 刪庫 刪表等等 sql語句大小寫不敏感 1.建立資料庫 2.顯示所有的資料庫 3.切換到要使用的資料庫,use 資料庫名稱 4.4.刪除資料庫 drop database if exists 資料庫名 5...