首页 > 解决方案 > 如何使用 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=引擎)

标签: pythonmysqlpandas

解决方案


可以纯粹用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 中有条件地赋值


推荐阅读