.sql文件_Mysql分组排序及Sql文件执行
????最近在做一個臨時項目,采用的是mysql開發,主要涉及兩個問題:1.一個是傳參問題;2.另一個是實現對數據分組取前4的數據。個人感覺很有意義,特此記錄一下。
一.傳參問題
????執行mysql文件,需要從外部傳入參數時,mysql沒有hive那么靈活,只有通過sed命令進行處理,比如有sql文件a.sql內容大致如下:
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 '當前經營周開始日期',
end_date_w varchar(60)? default? null comment '當前經營周結束日期',
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;
????執行的命令大致如下:
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文件里面不能有中文,否則執行會報錯)
二.mysql組內分組取數
?????該sql主要是通過先查詢出t1的數據,然后一條一條和where子查詢里面的數據進行對比,取出每個分組中的前4條,這種用法感覺有點巧妙,
?sql文件內容: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查看,可以看出該語法的性能很差,后期可以考慮其他方式進行優化。
總結
以上是生活随笔為你收集整理的.sql文件_Mysql分组排序及Sql文件执行的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: k3 审核流程图_3-金蝶K3操作流程图
 - 下一篇: pyqt安装_Win10下安装Label