Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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,我试图为所有有多个受抚养人的员工显示ssn、名字(fname)、姓氏(lname)、受抚养人姓名、受抚养人性别和受抚养关系。 我可以得到所有依赖项的列表。什么是显示包含多个依赖项的条目的查询 显示创建员工表 Employee | CREATE TABLE `employee` ( `fname` varchar(15) NOT NULL, `minit` varchar(1) DEFAULT NULL, `lname` varchar(15) NOT NULL, `ssn` char(9) NO

我试图为所有有多个受抚养人的员工显示ssn、名字(fname)、姓氏(lname)、受抚养人姓名、受抚养人性别和受抚养关系。 我可以得到所有依赖项的列表。什么是显示包含多个依赖项的条目的查询

显示创建员工表

Employee | CREATE TABLE `employee` (
`fname` varchar(15) NOT NULL,
`minit` varchar(1) DEFAULT NULL,
`lname` varchar(15) NOT NULL,
`ssn` char(9) NOT NULL DEFAULT '',
`bdate` date DEFAULT NULL,
`address` varchar(50) DEFAULT NULL,
`sex` char(1) DEFAULT NULL,
`salary` decimal(10,2) DEFAULT NULL,
`superssn` char(9) DEFAULT NULL,
`dno` int(11) DEFAULT NULL,
PRIMARY KEY (`ssn`),
KEY `fk_employee_department` (`dno`),
KEY `fk_employee_employee` (`superssn`),
CONSTRAINT `fk_employee_department` 
           FOREIGN KEY (`dno`) REFERENCES `department` (`dnumber`),
CONSTRAINT `fk_employee_employee` 
           FOREIGN KEY (`superssn`) REFERENCES `employee` (`ssn`)
ENGINE=InnoDB DEFAULT CHARSET=latin1 |
显示创建表依赖项

    DEPENDENT | CREATE TABLE `dependent` (
 `essn` char(9) NOT NULL DEFAULT '',
 `dependent_name` varchar(15) NOT NULL DEFAULT '',
 `sex` char(1) DEFAULT NULL,
 `bdate` date DEFAULT NULL,
 `relationship` varchar(8) DEFAULT NULL,
 PRIMARY KEY (`essn`,`dependent_name`),
 CONSTRAINT `fk_dependent_employee` 
             FOREIGN KEY (`essn`) REFERENCES `employee` (`ssn`)
 ENGINE=InnoDB DEFAULT CHARSET=latin1 |
当前正在使用查询:

select e. ssn,e.fname,e.lname,d.dependent_name,d.sex,d.relationship 
from dependent AS d ,Employee as e
WHERE e.ssn=d.essn

使用子查询计算每个子查询的依赖项数并将其加入。这将获得所需的筛选器:

select e.ssn, e.fname, e.lname, d.dependent_name, d.sex, d.relationship 
from Employee e join
     dependent d 
     on e.ssn = d.essn join
     (select d.essn, count(*) as cnt
      from dependent d
      group by d.essn
      having cnt >= 2
     ) d2
     on e.ssn = d2.essn
order by e.ssn;

如果不了解您的表结构,我们将无法提供非常有效的帮助。我假设这里至少涉及两个表,或者一个表中包含父子关系。请发布关于您的表格的更多信息。@MichaelBerkowski:我使用两个表格(员工和家属)。我试图使用ssn获取超过家属的员工…但是我获取所有有家属的员工。您的标题是“删除…”似乎与您的问题内容不匹配..抱歉,如果我误解了..还需要更多信息来了解员工表和从属表之间的关系。请发布
SHOW CREATE TABLE Employee的结果;显示创建表依赖项这是我正在使用的查询:::选择e。ssn,e.fname,e.lname,d.dependent_name,d.sex,d.relationship from dependent AS d,Employee AS e,其中e.ssn=d.essn;谢谢您的帮助,但我在字段列表中得到一个未知列d.essn错误