Php 如何从一个表的两行中查找不匹配的记录
我有一张桌子,学生Php 如何从一个表的两行中查找不匹配的记录,php,mysql,Php,Mysql,我有一张桌子,学生 **id | name | age | email | address** ------------------------------ 1 | abc | 20 | abc@gmail.com | street number10 ------------------------------ 2 | def | 25 | def@gmail.com | street number12 ------------------------------
**id | name | age | email | address**
------------------------------
1 | abc | 20 | abc@gmail.com | street number10
------------------------------
2 | def | 25 | def@gmail.com | street number12
------------------------------
3 |hjk | 20 | hjk@gmail.com | street number10
------------------------------
4 | umnnn | 20 | umnn@gmail.com | street number10
我想要匹配行和不匹配的记录
例如:
第3行(id=3)应与第4行(id=4)匹配,并应给出
只有第4行的不匹配值表示id=4,name=umnn,
电子邮件=umnn@gmail.com只是,不应该是年龄和地址
第二行(id=2)应与第三行(id=3)匹配,并应给出
只有第三行的值不匹配,表示id=3,name=hkj,age=20,
电子邮件=hkj@gmail.com,地址=街号10
像这样,第1行和第2行应该匹配,并且应该只给出第2行id、姓名、年龄、电子邮件的值。选择
SELECT
s2.id,
IF (s1.name = s2.name, NULL, s2.name) as name,
IF (s1.age = s2.age, NULL, s2.age) as age,
IF (s1.email = s2.email, NULL, s2.email) as email,
IF (s1.address = s2.address, NULL, s2.address) as address
FROM student s1
LEFT JOIN student s2 ON s1.id < s2.id
GROUP BY s1.id
ORDER BY s1.id, s2.id
s2.id,
如果(s1.name=s2.name,NULL,s2.name)作为名称,
如果(s1.age=s2.age,NULL,s2.age)作为年龄,
如果(s1.email=s2.email,NULL,s2.email)作为电子邮件,
如果(s1.address=s2.address,NULL,s2.address)作为地址
来自学生s1
在s1.id
我不知道如何解决它。请给我任何密码。非常紧急。