Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL中的条件语句_Mysql - Fatal编程技术网

MySQL中的条件语句

MySQL中的条件语句,mysql,Mysql,我有两个表,我试图通过姓氏和名字来匹配数据。由于我有多个同名的客户,我想尝试查看(在前面的查询中)电话号码或街道地址是否匹配。有没有办法在一份声明中做到这一点 到目前为止,我的简单陈述是: SELECT * FROM table1, table2 WHERE table1.LAST_NAME = table2.LAST_NAME AND table1.FIRST_NAME = table2.FIRST_NAME 我不确定是否有一种方法可以在MySQL中执行以下操作: 如果(table1.

我有两个表,我试图通过姓氏和名字来匹配数据。由于我有多个同名的客户,我想尝试查看(在前面的查询中)电话号码或街道地址是否匹配。有没有办法在一份声明中做到这一点

到目前为止,我的简单陈述是:

SELECT * 
FROM table1, table2
WHERE table1.LAST_NAME = table2.LAST_NAME 
AND table1.FIRST_NAME = table2.FIRST_NAME 
我不确定是否有一种方法可以在MySQL中执行以下操作:
如果(table1.LAST_NAME=table2.LAST_NAME)和(table1.FIRST_NAME=table2.FIRST_NAME)等于一个结果,并且找到了重复项,则根据街道地址或电话进行匹配。如果没有找到重复项,只需按名称进行匹配。

您可以通过添加空格检查来选择额外的比较,如下所示:

SELECT * 
FROM table1, table2
WHERE table1.LAST_NAME = table2.LAST_NAME 
AND table1.FIRST_NAME = table2.FIRST_NAME 
AND (table1.PHONE = table2.PHONE OR table1.PHONE = '' OR table2.PHONE = '')
AND (table1.ADDRESS = table2.ADDRESS OR table1.ADDRESS = '' OR table2.ADDRESS = '')

这样,如果任何一个表的
PHONE
字段为空,比较将通过,因此没有过滤效果。

为什么不总是根据其他街道地址或电话进行匹配?我们可能会遇到一个表既没有地址也没有电话号码的情况。哦,我想这并不难,让我来尝试一下……这似乎是可行的,但如果有一个名称匹配,但地址不匹配,它看起来不会返回结果。例如,一个表列出“枫树巷”,另一个表列出“枫树林”。我最大的问题是两个表都没有标准化的数据。但你的答案肯定接近我想要的位置。非常感谢。对于非规范化数据,人类智能是最好的,但您可以在字符串替换中进行一组标准调整,如“Lane”表示“LN”