mysql - SQL如何在sql中添加if else条件

标签 mysql sql if-statement

表 A 由名字、第二名、姓氏、msisdn、注册日期组成。表 b 有名字、第二名、姓氏、msisdn、注册日期和其他一些列——但我只想考虑提到的这 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

else 将所有记录显示为不属于上述任何情况的结果。此外,如果可能,请包括一个在检查不匹配时忽略大写字母和小写字母的解决方案。

Please find the sample data here 这里的问题是,在从@sagi 执行查询后,在结果中我得到的行在名字、第二个和姓氏之间具有完美匹配但具有不同的注册日期——因为我们没有考虑查询中的注册日期,会影响结果吗?

最佳答案

这应该可以解决问题:

SELECT A.*, B.* 
FROM TABLE1 A
INNER JOIN TABLE2 B ON A.MSISDN = B.MSISDN
WHERE (UPPER(B.FIRSTNAME),UPPER(B.LASTNAME)) NOT IN ((UPPER(A.FIRSTNAME),UPPER(A.LASTNAME)),(UPPER(A.FIRSTNAME),UPPER(A.SECONDNAME)))

不需要 IF ,如果这个条件返回 true,这意味着你的所有条件都满足了,要么 first_name 不同,要么 last_name是。

关于mysql - SQL如何在sql中添加if else条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39485070/

相关文章:

php - MySQL 搜索中的语法错误看起来是正确的

c++ - 如何在 switch 语句内部或外部使用 if 语句 (C++)

excel - 级联 if 语句不起作用

php - 每个表行都需要一个 ID 吗?

php - 转义单引号并用引号保存到数据库

sql - 将记录移动到另一个表与 "flag"列 SQL 性能

sql - Postgresql 根据从文本列派生的排名选择结果

bash - if [] 中 "[: too many arguments"错误的含义(方括号)

PHP SQL 以及将 'WHERE' 与变量一起使用

mysql - 从 MYSQL 中的表中删除重复的电子邮件地址