python - 如何使用 read_sql 为列匹配和不匹配插入标志
问题描述
我试图在比较 2 个不同表的列之后插入一个标志(匹配/不匹配)。我能够比较两个 mysql 表列,但不知道如何插入标志列并获取状态(匹配/不匹配)
下面是一个例子,考虑 2 个 mysql 表:
选项卡1:
email
abc@gamil.com
xyz@email.com
ijk@gmail.com
ghi@gmail.com
pqr@gmail.com
yup@gmail.com
选项卡2:
email
ijk@gmail.com
yup@gmail.com
选项卡3:
email
xyz@email.com
pqr@gmail.com
现在我想要这样的输出:
email valid
abc@gamil.com non-match
xyz@email.com match
ijk@gmail.com match
ghi@gmail.com non-match
pqr@gmail.com match
yup@gmail.com match
用熊猫试过:
data_2=pd.read_sql("select tab1.*,if(tab2.email is not null ,'MATCH','NONMATCH') stataus from tab1 left join tab2 on tab1.email=tab2.email ",con=engine)
获得多表比较的不正确语法:
*但我怎么能做2张桌子:
试过这种方式
data_2=pd.read_sql("select tab1. ,if(tab2.email and tab3.email is not null ,'MATCH','NONMATCH') tab1 的状态 left join tab2 on tab1.email=tab2.email left join tab3 on tab1.email=tab3.email",con=引擎)
解决方案
可以纯粹用SQL解决。
SELECT tab1.email
CASE WHEN tab2.email IS NULL THEN 'non-match' ELSE 'valid' END
FROM tab1 left join tab2 on tab1.email =tab2.email"
案例/何时在 mysql 中有条件地赋值
推荐阅读
- javascript - 如何使用 JavaScript 创建电子商务产品价格度量计算器?
- c# - IQueryable 执行 LINQ 查询后返回空结果
- spring-boot - 使用 SpringDoc webflux 支持时无法显示 Swagger/OpenApi 文档
- sql-server - 允许在 Oracle 中为 SSRS 报告提供多个值
- jestjs - 无法使用 jest 在 vuejs 中获取 vuex 存储 getters 数据
- ios - 如何从不同的函数调用 TextField
- gitlab-ci - 来自 kubectl 命令中另一个项目的 Gitlab CI 参考文件
- javascript - 在 Chrome 扩展中使用 Google API 电子表格 JS 删除值
- python - 隐藏(或不显示)mplfinance 中的图
- sql - 如何在 SQL SERVER 2016+ 中生成 SHA-3(256) 哈希