【发布时间】:2019-12-12 12:32:40
【问题描述】:
我有 2 个 mySQL 表,如下所示。
CREATE TABLE occupation_competence(grpid varchar(15), skillid varchar(15));
INSERT INTO occupation_competence(grpid,skillid) VALUES("II-Ob","IL-X");
INSERT INTO occupation_competence(grpid,skillid) VALUES("II-Ob","II-1");
INSERT INTO occupation_competence(grpid,skillid) VALUES("II-Ob","IS-1");
INSERT INTO occupation_competence(grpid,skillid) VALUES("II-Oc","IL-X");
INSERT INTO occupation_competence(grpid,skillid) VALUES("II-Oc","II-1");
INSERT INTO occupation_competence(grpid,skillid) VALUES("AA-RS","IL-X");
INSERT INTO occupation_competence(grpid,skillid) VALUES("AA-RS","AA-1");
CREATE TABLE personnel_competences(id varchar(12), skillid varchar(50));
INSERT INTO personnel_competences(id, skillid) VALUES(79,"IT-1");
INSERT INTO personnel_competences(id, skillid) VALUES(79,"II-1");
INSERT INTO personnel_competences(id, skillid) VALUES(79,"IL-X");
INSERT INTO personnel_competences(id, skillid) VALUES(56,"AA-X");
INSERT INTO personnel_competences(id, skillid) VALUES(80,"AA-X");
INSERT INTO personnel_competences(id, skillid) VALUES(80,"IL-X");
INSERT INTO personnel_competences(id, skillid) VALUES(80,"AA-1");
INSERT INTO personnel_competences(id, skillid) VALUES(8,"II-1");
INSERT INTO personnel_competences(id, skillid) VALUES(8,"IL-X");
INSERT INTO personnel_competences(id, skillid) VALUES(21,"YO-X");
INSERT INTO personnel_competences(id, skillid) VALUES(51,"AA-1");
INSERT INTO personnel_competences(id, skillid) VALUES(51,"IL-X ");
我需要以这种方式从表中提取数据/id:
| AA-RS | 80 |
| AA-RS | 51 |
| II-Oc | 79 |
| II-Oc | 8 |
在这里,例如,在第一个 (occupation_competence) 表中,在同一个 grpid (“AA-RS”) 下,我们有 2 个不同的值“IL-X”和“AA-1”。然后我们来到第二个(personnel_competences)表,我们找到至少必须具有这两个值的 id。在这种情况下,id no 80 和 51 至少具有相同的值,所以我们取它。
另一个例子,在第一个表中,“II-Ob”有 3 个值:“IL-X”、“II-1”、“IS-1”。然后我们转到第二个表并尝试找出至少必须具有这 3 个值的 id。由于没有具有所有这 3 个值的 id,所以我们不接受它。
同理,“II-Oc”有两个值:“IL-X”和“II-1”。而在第二个表中,id 79 和 8 至少有这两个值,所以我们取它。
在这种情况下我应该使用什么 SQL/mySQL 查询/条件?任何帮助/建议将不胜感激。
【问题讨论】:
标签: mysql sql database datatables