日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

.sql文件_Mysql分组排序及Sql文件执行

發(fā)布時間:2025/3/11 数据库 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .sql文件_Mysql分组排序及Sql文件执行 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

????最近在做一個臨時項目,采用的是mysql開發(fā),主要涉及兩個問題:1.一個是傳參問題;2.另一個是實現(xiàn)對數(shù)據(jù)分組取前4的數(shù)據(jù)。個人感覺很有意義,特此記錄一下。

一.傳參問題

????執(zhí)行mysql文件,需要從外部傳入?yún)?shù)時,mysql沒有hive那么靈活,只有通過sed命令進(jìn)行處理,比如有sql文件a.sql內(nèi)容大致如下:

create table if not exists dp_collection.dc_sale_ztds_brand_base_week_info(

id INT? PRIMARY KEY AUTO_INCREMENT,

plan_id varchar(60)? default? null comment '智投方案id',

brand_name varchar(60)? default? null comment '品牌名稱',

put_model varchar(60)? default? null comment '投放模式',

sign_city varchar(60)? default? null comment '簽約城市',

start_date_w varchar(60)? default? null comment '當(dāng)前經(jīng)營周開始日期',

end_date_w varchar(60)? default? null comment '當(dāng)前經(jīng)營周結(jié)束日期',

logo_url varchar(500)? default? null comment '品牌logo圖片',

lbs_url varchar(500)? default? null comment 'LBS固定圖片',

word_cloud_url varchar(500)? default? null comment '詞云固定圖片',

insert_time datetime? default '1991-01-01 11:11:11' comment '入庫時間',

update_time datetime? ?DEFAULT CURRENT_TIMESTAMP comment '更新時間'

)

comment='xxx';

truncate? table dp_collection.dc_sale_ztds_brand_base_week_info;

insert into dp_collection.dc_sale_ztds_brand_base_week_info(plan_id,brand_name,put_model,sign_city,start_date_w,end_date_w,logo_url,lbs_url,word_cloud_url,insert_time)

select?

t1.plan_id

,t1.brand_name

,t1.put_model

,t1.sign_city

,t2.j_wfirst_date as start_date_w

,t2.j_wend_date as end_date_w

,t1.logo_url

,t1.lbs_url

,t1.word_cloud_url

,now() as insert_time

from dp_collection.dc_sale_ztds_brand_base_info t1

left join? dp_collection.dim_date t2 on t2.`date`=@current_date;

????執(zhí)行的命令大致如下:

sed -i "1 i\ set @current_date='$current_date';" ztds_brand_lanuch_info.sql

mysql -h1.1.1.1?-udp_collection -pxxxxxx?-Ddp_collection

sed -i "1d" a.sql

????主要是先通過替換sql的變量,然后再還原的用法。

(ps:注意a.sql文件里面不能有中文,否則執(zhí)行會報錯)

二.mysql組內(nèi)分組取數(shù)

?????該sql主要是通過先查詢出t1的數(shù)據(jù),然后一條一條和where子查詢里面的數(shù)據(jù)進(jìn)行對比,取出每個分組中的前4條,這種用法感覺有點巧妙,

?sql文件內(nèi)容:SELECT t1.plan_id,t1.launch_city FROM dp_collection.ztds_brand_city_info_tmp t1 WHERE 4>(SELECT COUNT(*) FROM dp_collection.ztds_brand_city_info_tmp?

WHERE plan_id=t1.plan_id? and plan_launch_point_num>t1.plan_launch_point_num) ORDER BY t1.plan_id,t1.plan_launch_point_num desc;

????通過explain查看,可以看出該語法的性能很差,后期可以考慮其他方式進(jìn)行優(yōu)化。

總結(jié)

以上是生活随笔為你收集整理的.sql文件_Mysql分组排序及Sql文件执行的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。