具體事例
由於使用的表的資料較多,所以只展示了部分資料
第一種
如上述sql,若想獲取其他欄位的資料,而直接在sql語句上增加該欄位的話,查詢到的結果是不一致的(product_price 最大的那條資料對應的id應該是25,而查詢出來的id是21(預設顯示分組後的第一條資料的值)),需注意。由於能力有限,具體原因並不知道。若有大佬知道,希望能給出答案。
第二種
因為在mysql5.7的時候,子查詢的排序已經變為無效了,可能是因為子查詢大多數是作為乙個結果給主查詢使用,所以子查詢不需要排序的原因。
所以,對子查詢的排序進行limit限制,此時子查詢就不光是排序,此時排序會生效,但是限制條數卻只能盡可能的設定大些。
序號函式:row_number()、rank()、dense_rank()
select
a.id,
a.order_id,
a.product_price
from
(select order_id, row_number (
)over
(partition
by order_id order
by product_price desc
)as price_order,product_price from t_score ) a
頭尾函式:first_value(expr)、last_value(expr)
select
id,order_id,
product_price,
first_value ( product_price )
over w as first_price,
last_value ( product_price )
over w as last_price
from
oms_order_item
window w as
(partition
by order_id order
by product_price )
由於mysql版本過低(8.0及以上才可使用視窗函式),無法使用。只是將用法記錄一下。 MySQL對某一字段去重
mysql有乙個去重關鍵字distinct,但是如果查詢的字段有很多,而想要去重的字段只是其中的某乙個,那麼僅僅用distinct是完成不了的,distince只能做到你查詢的那些欄位都是重複時才會去重。比如有一張使用者表的資料是這樣的 這裡我們本意是想查出一條資料,如果是這樣寫sql語句 sele...
排序之根據某一字段的應用排序實現
ds裡介紹了各種狂拽酷炫的排序演算法,但是都是基於單個元素,實際應用中對某條記錄的某個欄位來排序的情況層出不窮,如果還是原來的演算法直接用的話,恐怕無濟於事,於是我想怎麼根據某個欄位來排序,當時學c 的時候qsort,一直都用這個排序,有個compare函式比較糾結,裡面指標多,這個是排序的依據,在...
根據某一字段值相同合併字串 SQL
根據某一字段值相同合併字串 sql 做專案的過程中,遇到乙個問題,相同id,不同value的記錄希望合併成一條記錄,value以逗號分隔,從網上搜了搜解決方案,整理如下,備忘。一 字串合併 表名 test 字段 id int name nvarchar 50 字段值 期望結果 id namestr ...