MySQL 批量生成 SQL 脚本语句解决实际的业务需求/如何拼接字符串/拼接字符串的 SQL 语句
生活随笔
收集整理的這篇文章主要介紹了
MySQL 批量生成 SQL 脚本语句解决实际的业务需求/如何拼接字符串/拼接字符串的 SQL 语句
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 實際需求
- 分析思路
- 寫拼接 SQL 腳本的腳本語句
- 執行得到腳本語句
- 保存成 SQL 腳本文件
實際需求
有些行政區域的字段 area_fullname 是空的,如何補全呢?如下所示:
分析思路
(一)如何取到每個區域的上級名稱和上上級名稱?
區域編碼有規律,末尾有2個0的是上級,末尾有3個0 的是上上級,從而可以通過截取字符串、拼接字符串、關聯子查詢來得到。
(二)用到哪些技術點?
把 area_fullname 為空的區域的名稱,上級名稱,上上級名稱查詢出來,語句如下:
select a.area_code,a.area_name as inferior, (ifnull((select b.area_name from td_area_test b where b.area_code = concat(left(a.area_code,4),'00')),'')) superior, (ifnull((select c.area_name from td_area_test c where c.area_code = concat(left(a.area_code,3),'000')),'')) superlative from td_area_test a where a.area_fullname ='';寫拼接 SQL 腳本的腳本語句
批量生成 SQL 腳本語句的腳本語句如下:
select concat('update td_area_test set area_fullname = ''',(concat((ifnull((select c.area_name from td_area_test c where c.area_code = concat(left(a.area_code,3),'000')),'')),(ifnull((select b.area_name from td_area_test b where b.area_code = concat(left(a.area_code,4),'00')),'')),a.area_name)),''' where area_code = ''',a.area_code,''';') sqlsentence from td_area_test a where a.area_fullname = '';執行得到腳本語句
執行上述腳本語句后得到如下結果:
mysql> select concat('update td_area_test set area_fullname = ''',(concat((ifnull((select c.area_name from td_area_test c where c.area_code = concat(left(a.area_code,3),'000')),'')),(ifnull((select b.area_name from td_area_test b where b.area_code = concat(left(a.area_code,4),'00')),'')),a.area_name)),''' where area_code = ''',a.area_code,''';') sqlsentence from td_area_test a where a.area_fullname = ''; +---------------------------------------------------------------------------------------------------------------------------------------------------------+ | sqlsentence | +---------------------------------------------------------------------------------------------------------------------------------------------------------+ | update td_area_test set area_fullname = '內蒙古自治區赤峰市敖漢旗' where area_code = '150430'; | | update td_area_test set area_fullname = '錫林郭勒盟正藍旗' where area_code = '152530'; | | update td_area_test set area_fullname = '黑龍江省哈爾濱市香坊區' where area_code = '230110'; | | update td_area_test set area_fullname = '黑龍江省齊齊哈爾市克東縣' where area_code = '230230'; | | update td_area_test set area_fullname = '黑龍江省伊春市五營區' where area_code = '230710'; | | update td_area_test set area_fullname = '上海市楊浦區' where area_code = '310110'; | | update td_area_test set area_fullname = '上海市奉賢區' where area_code = '310120'; | | update td_area_test set area_fullname = '上海市崇明縣' where area_code = '310230'; | | update td_area_test set area_fullname = '江蘇省淮安市盱眙縣' where area_code = '320830'; | | update td_area_test set area_fullname = '浙江省杭州市余杭區' where area_code = '330110'; | | update td_area_test set area_fullname = '羅津' where area_code = '342201'; | | update td_area_test set area_fullname = '福建省三明市建寧縣' where area_code = '350430'; | | update td_area_test set area_fullname = '江西省九江市彭澤縣' where area_code = '360430'; | | update td_area_test set area_fullname = '江西省贛州市寧都縣' where area_code = '360730'; | | update td_area_test set area_fullname = '江西省吉安市永新縣' where area_code = '360830'; | | update td_area_test set area_fullname = '撫州市撫州市廣昌縣' where area_code = '361030'; | | update td_area_test set area_fullname = '撫州市上饒市婺源縣' where area_code = '361130'; | | update td_area_test set area_fullname = '山東省濟寧市汶上縣' where area_code = '370830'; | | update td_area_test set area_fullname = '許昌市南陽市桐柏縣' where area_code = '411330'; | | update td_area_test set area_fullname = '湖南省長沙市安居區' where area_code = '430185'; | | update td_area_test set area_fullname = '湖南省株洲市蘆松區' where area_code = '430282'; | | update td_area_test set area_fullname = '湖南省常德市賀家山原種場' where area_code = '430782'; | | update td_area_test set area_fullname = '湖南省常德市德山開發區' where area_code = '430783'; | | update td_area_test set area_fullname = '湖南省常德市西湖管理區' where area_code = '430784'; | | update td_area_test set area_fullname = '湖南省常德市西洞庭管理區' where area_code = '430785'; | | update td_area_test set area_fullname = '湖南省益陽市大通湖區' where area_code = '430940'; | | update td_area_test set area_fullname = '郴州市懷化通道侗族自治縣' where area_code = '431230'; | | update td_area_test set area_fullname = '郴州市懷化洪江區' where area_code = '431282'; | | update td_area_test set area_fullname = '湘西土家族苗族自治州龍山縣' where area_code = '433130'; | | update td_area_test set area_fullname = '廣西壯族自治區桂林市平樂縣' where area_code = '450330'; | | update td_area_test set area_fullname = '百色市百色市西林縣' where area_code = '451030'; | | update td_area_test set area_fullname = '省直轄縣級行政區劃省直轄縣級行政區劃瓊中黎族苗族自治縣' where area_code = '469030'; | | update td_area_test set area_fullname = '重慶市萬盛區' where area_code = '500110'; | | update td_area_test set area_fullname = '重慶市豐都縣' where area_code = '500230'; | | update td_area_test set area_fullname = '重慶市石柱土家族自治縣' where area_code = '500240'; | | update td_area_test set area_fullname = '阿壩藏族羌族自治州壤塘縣' where area_code = '513230'; | | update td_area_test set area_fullname = '甘孜藏族自治州德格縣' where area_code = '513330'; | | update td_area_test set area_fullname = '涼山彝族自治州金陽縣' where area_code = '513430'; | | update td_area_test set area_fullname = '貴州省遵義市習水縣' where area_code = '520330'; | | update td_area_test set area_fullname = '銅仁地區萬山特區' where area_code = '522230'; | | update td_area_test set area_fullname = '黔東南苗族侗族自治州臺江縣' where area_code = '522630'; | | update td_area_test set area_fullname = '黔南布依族苗族自治州龍里縣' where area_code = '522730'; | | update td_area_test set area_fullname = '云南省昭通市水富縣' where area_code = '530630'; | | update td_area_test set area_fullname = '紅河哈尼族彝族自治州金平苗族瑤族傣族自治縣' where area_code = '532530'; | | update td_area_test set area_fullname = '大理白族自治州洱源縣' where area_code = '532930'; | | update td_area_test set area_fullname = '日喀則地區仁布縣' where area_code = '542330'; | | update td_area_test set area_fullname = '那曲地區尼瑪縣' where area_code = '542430'; | | update td_area_test set area_fullname = '陜西省寶雞市鳳縣' where area_code = '610330'; | | update td_area_test set area_fullname = '陜西省咸陽市淳化縣' where area_code = '610430'; | | update td_area_test set area_fullname = '陜西省延安市宜川縣' where area_code = '610630'; | | update td_area_test set area_fullname = '陜西省漢中市佛坪縣' where area_code = '610730'; | | update td_area_test set area_fullname = '陜西省榆林市清澗縣' where area_code = '610830'; | | update td_area_test set area_fullname = '克孜勒蘇柯爾克孜自治州喀什地區巴楚縣' where area_code = '653130'; | +---------------------------------------------------------------------------------------------------------------------------------------------------------+ 53 rows in set (0.01 sec)保存成 SQL 腳本文件
上述生成的SQL 腳本語句直接從命令行復制粘貼到腳本文件中,要注意清除掉多余的符號 | ,然后在命令終端執行腳本文件即可,清理后如下:
update td_area_test set area_fullname = '內蒙古自治區赤峰市敖漢旗' where area_code = '150430'; update td_area_test set area_fullname = '錫林郭勒盟正藍旗' where area_code = '152530'; update td_area_test set area_fullname = '黑龍江省哈爾濱市香坊區' where area_code = '230110'; update td_area_test set area_fullname = '黑龍江省齊齊哈爾市克東縣' where area_code = '230230'; update td_area_test set area_fullname = '黑龍江省伊春市五營區' where area_code = '230710'; update td_area_test set area_fullname = '上海市楊浦區' where area_code = '310110'; update td_area_test set area_fullname = '上海市奉賢區' where area_code = '310120'; update td_area_test set area_fullname = '上海市崇明縣' where area_code = '310230'; update td_area_test set area_fullname = '江蘇省淮安市盱眙縣' where area_code = '320830'; update td_area_test set area_fullname = '浙江省杭州市余杭區' where area_code = '330110'; update td_area_test set area_fullname = '羅津' where area_code = '342201'; update td_area_test set area_fullname = '福建省三明市建寧縣' where area_code = '350430'; update td_area_test set area_fullname = '江西省九江市彭澤縣' where area_code = '360430'; update td_area_test set area_fullname = '江西省贛州市寧都縣' where area_code = '360730'; update td_area_test set area_fullname = '江西省吉安市永新縣' where area_code = '360830'; update td_area_test set area_fullname = '撫州市撫州市廣昌縣' where area_code = '361030'; update td_area_test set area_fullname = '撫州市上饒市婺源縣' where area_code = '361130'; update td_area_test set area_fullname = '山東省濟寧市汶上縣' where area_code = '370830'; update td_area_test set area_fullname = '許昌市南陽市桐柏縣' where area_code = '411330'; update td_area_test set area_fullname = '湖南省長沙市安居區' where area_code = '430185'; update td_area_test set area_fullname = '湖南省株洲市蘆松區' where area_code = '430282'; update td_area_test set area_fullname = '湖南省常德市賀家山原種場' where area_code = '430782'; update td_area_test set area_fullname = '湖南省常德市德山開發區' where area_code = '430783'; update td_area_test set area_fullname = '湖南省常德市西湖管理區' where area_code = '430784'; update td_area_test set area_fullname = '湖南省常德市西洞庭管理區' where area_code = '430785'; update td_area_test set area_fullname = '湖南省益陽市大通湖區' where area_code = '430940'; update td_area_test set area_fullname = '郴州市懷化通道侗族自治縣' where area_code = '431230'; update td_area_test set area_fullname = '郴州市懷化洪江區' where area_code = '431282'; update td_area_test set area_fullname = '湘西土家族苗族自治州龍山縣' where area_code = '433130'; update td_area_test set area_fullname = '廣西壯族自治區桂林市平樂縣' where area_code = '450330'; update td_area_test set area_fullname = '百色市百色市西林縣' where area_code = '451030'; update td_area_test set area_fullname = '省直轄縣級行政區劃省直轄縣級行政區劃瓊中黎族苗族自治縣' where area_code = '469030'; update td_area_test set area_fullname = '重慶市萬盛區' where area_code = '500110'; update td_area_test set area_fullname = '重慶市豐都縣' where area_code = '500230'; update td_area_test set area_fullname = '重慶市石柱土家族自治縣' where area_code = '500240'; update td_area_test set area_fullname = '阿壩藏族羌族自治州壤塘縣' where area_code = '513230'; update td_area_test set area_fullname = '甘孜藏族自治州德格縣' where area_code = '513330'; update td_area_test set area_fullname = '涼山彝族自治州金陽縣' where area_code = '513430'; update td_area_test set area_fullname = '貴州省遵義市習水縣' where area_code = '520330'; update td_area_test set area_fullname = '銅仁地區萬山特區' where area_code = '522230'; update td_area_test set area_fullname = '黔東南苗族侗族自治州臺江縣' where area_code = '522630'; update td_area_test set area_fullname = '黔南布依族苗族自治州龍里縣' where area_code = '522730'; update td_area_test set area_fullname = '云南省昭通市水富縣' where area_code = '530630'; update td_area_test set area_fullname = '紅河哈尼族彝族自治州金平苗族瑤族傣族自治縣' where area_code = '532530'; update td_area_test set area_fullname = '大理白族自治州洱源縣' where area_code = '532930'; update td_area_test set area_fullname = '日喀則地區仁布縣' where area_code = '542330'; update td_area_test set area_fullname = '那曲地區尼瑪縣' where area_code = '542430'; update td_area_test set area_fullname = '陜西省寶雞市鳳縣' where area_code = '610330'; update td_area_test set area_fullname = '陜西省咸陽市淳化縣' where area_code = '610430'; update td_area_test set area_fullname = '陜西省延安市宜川縣' where area_code = '610630'; update td_area_test set area_fullname = '陜西省漢中市佛坪縣' where area_code = '610730'; update td_area_test set area_fullname = '陜西省榆林市清澗縣' where area_code = '610830'; update td_area_test set area_fullname = '克孜勒蘇柯爾克孜自治州喀什地區巴楚縣' where area_code = '653130';總結
以上是生活随笔為你收集整理的MySQL 批量生成 SQL 脚本语句解决实际的业务需求/如何拼接字符串/拼接字符串的 SQL 语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阜阳房产网上备案查询(阜阳房产网上备案)
- 下一篇: 数据库 MySQL 如何设置表的主键自增