Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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
Php 如何从一个表的两行中查找不匹配的记录_Php_Mysql - Fatal编程技术网

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
我不知道如何解决它。请给我任何密码。非常紧急。