2张表之间的差异显示出一些相似之处

时间:2019-08-08 19:45:03

标签: mysql sql

我在PHP应用程序中使用了两个表,我想要newLista中的所有行,而oldLista中不存在的所有行,都具有相同的结构

  

id | vinculo | tipo_dni | numero_dni |阿彼里多| nombre | fech_nac | sexo | numero_tit | ABM |方便

我已经尝试使用RIGHT JOIN,但是它不会显示任何结果:

SELECT * 
FROM newlista a 
RIGHT JOIN oldlista b ON a.numero_dni = b.numero_dni 
WHERE b.numero_dni IS NULL

我使用的代码是这样的:

SELECT * 
FROM newlista AS a 
WHERE NOT EXISTS ( 
    SELECT * 
    FROM oldlista AS b 
    WHERE a.numero_dni=b.numero_dni AND a.apellido = b.apellido 
) 
ORDER BY a.apellido ASC

但是它不断向我显示一些具有完全相同的numero_dni和相同的apellido

的人

3 个答案:

答案 0 :(得分:1)

select * from newlista
minus
select * from oldlista

答案 1 :(得分:0)

在这种情况下:

select * 
from newlista 
where numero_dni not in (select numero_dni 
                         from oldlista)
    and apellido not in (select apellido
                         from oldlista)

答案 2 :(得分:0)

此代码应执行您想要的操作:

prod_dfs = []
product_price_files = glob.glob('files/product_price/*.xlsx')
for c_file in product_price_files:
    temp_df = pd.read_excel(c_file,encoding = "utf-8")
    temp_df = self.preprocess_price_file(temp_df)
    prod_dfs.append(temp_df)
    prods_df = pd.concat(prod_dfs)
prods_df['Test'] = prods_df['My Column']
return prods_df

这基本上是您的查询。

如果看到重复项,这是因为 look 值相同但不相同。有些问题很容易解决。其他人更难。以下是一些示例:

  • 前导/尾随空格。可以使用SELECT a.* FROM newlista a WHERE NOT EXISTS (SELECT 1 FROM oldlista a2 WHERE a2.numero_dni = a.numero_dni AND a2.apellido = a.apellido ) ORDER BY a.apellido ASC; 来解决。
  • 混淆的字符,如一个和小写的L或一个破折号与一个破折号。斜视或更改字体可能会有帮助。
  • 隐藏的字符,例如可能不显示的退格键。
  • 其他字符集中的字符相同或看起来相同。