sql子查询+sublime正则修改数据库


一、子查询

SELECT * FROM TABLE WHERE TABLE.STAFF_ID IN (SELECT STAFF_ID FROM TABLE_SUB WHERE `NAME`IN ('张三','李四'));

--------------------------------------------------------------------------

用到的表:

base_staff_info 员工基础信息表

base_staff_dep_ref 员工信息关联表

STAFF_ID 关联字段

修改信息

子查询:表base_staff_info 中 NAME IN ('张三','李四')的STAFF_ID

修改:表base_staff_dep_ref 中 STAFF_ID IN (子查询) 的 STATUS修改为0   即删除



UPDATE base_staff_dep_ref SET base_staff_dep_ref.`STATUS`=0 WHERE base_staff_dep_ref.STAFF_ID IN (SELECT STAFF_ID FROM base_staff_info WHERE `NAME` IN ('张三','李四'));

查询

子查询:表base_staff_info 中 NAME IN ('张三','李四')的STAFF_ID

查询:表base_staff_dep_ref 中 STAFF_ID IN (子查询) 的 STATUS

SELECT `STATUS` FROM base_staff_dep_ref WHERE base_staff_dep_ref.STAFF_ID IN (SELECT STAFF_ID FROM base_staff_info WHERE `NAME`IN ('张三','李四'));

二、sublime 正则表达运用

将下面修改为这种格式    '鲍宁','毕凯','卞成娟'.........

鲍宁
毕凯
卞成娟
蔡士林
曹春雷
沈爱国
沈海军
沈坚
沈宇音
陈霖
陈胜
陈英
程能俊
储竞伦
从潘伟
崔勇
丁子翩
范例
方锴
冯达
冯伟骏
高芳
高钢
高翔
高银波

打开Replace

打开正则

每个名字前后都添加 '

Find (\w{2,}) # 匹配2个以上的字符串包括中文,并且进行了分组 省事也可(\w+)

Replace '\1'    # \1 表示前面匹配到的分组1,顺便加上格式即可

换行键替换成 ,

Find \n  # 注意:sublime只有打开了正则模式\n才有效
Replace , 

 大功告成

三、python处理

也可直接用python处理,达到同样效果。三个文件放在同一目录,re_python.txt问要处理的文件,re_python_finish.txt处理完成要输出文件(现在为空),action.py为脚本

re_python.txt

鲍宁
毕凯
卞成娟
蔡士林
曹春雷
沈爱国
沈海军
沈坚
沈宇音
陈霖
陈胜
陈英
程能俊
储竞伦
从潘伟
崔勇
丁子翩
范例
方锴
冯达
冯伟骏
高芳
高钢
高翔
高银波

action.py

import re

with open('re_python.txt') as f, open('re_python_finish.txt', 'w') as f2:
    text = f.read()
    regex = re.compile('(\w+)')
    result = regex.findall(text)
    for i in result:
        i = '\'{}\','.format(i)
        f2.write(i)
        

直接处理

python action.py