【发布时间】:2017-01-21 22:37:45
【问题描述】:
表 A 由 firstname、secondname、lastname、msisdn、registrationdate 组成。表 b 有 firstname、secondname、lastname、msisdn、registrationdate 和其他一些列 - 但我只想考虑提到的这 5 个列。 我有这样的东西
SELECT SELECT A.MSISDN,A.FIRSTNAME,A.SECONDNAME,A.LASTNAME,A.REGDATE, B.MSISDN,B.FIRSTNAME,B.SECONDNAME,B.LASTNAME,B.REGDATE
FROM TABLE1 A
INNER JOIN TABLE2 B ON A.MSISDN = B.MSISDN
WHERE A.FIRSTNAME != B.FIRSTNAME
OR A.LASTNAME != B.LASTNAME
以前我只考虑表 A 中的名字、姓氏并检查表 B 中的不匹配,但我得到了数千条记录作为结果,我想缩小搜索范围。
我如何在此处包含 if else 案例,以便
if a.firstname == b.firstname && a.secondname == b.lastname - Ignore this record.
if a.firstname == b.firstname && a.lastname == b.lastname - Ignore this record.
if a.firstname == b.firstname && a.lastname == b.secondname- Ignore this record.
if a.firstname not equal to b.firstname - show this record as result
if a.firstname == b.firstname && a.secondname not equal to b.lastname - show this record as result
否则将所有记录显示为不属于上述任何一种情况的结果。此外,如果可能,请提供一个解决方案,在检查不匹配时忽略大写字母和小写字母。
这里的问题是,在从@sagi 执行查询之后,在结果中我得到的行在名字、名字和姓氏之间完全匹配,但注册日期不同——因为我们没有考虑查询中的注册日期,会影响结果吗?
【问题讨论】:
-
使用 AND/OR。还有括号。
-
我对这个问题及其答案有点困惑。我可能遗漏了一些明显的东西,但原来的查询不是已经很好了吗?
-
@Aioros 原始查询只是检查名字和姓氏是否不匹配。但我需要检查其他情况,例如 a.secondname == b.lastname 等,以缩小查询结果的范围。
-
哦,好吧,我错过了明显的一点。
-
好吧,其实我也不确定了。我认为现在 OP 想要添加关于名/姓与另一个名/姓相同的条件,但我认为接受的答案不能解决这个问题。
标签: mysql sql if-statement