大家好,我会尽量具体和准确。
我四处寻找我的问题的答案,同时我做了两张桌子
在第一个表中,我有公司的名称和他们的id-s。
在第二个表中,我有员工的姓名,他们的id-s,他们居住的城市,以及他们工作的公司的idK-s(应该与前一个表中的id-s匹配)。
我应该选择至少有四(3)名或以上员工居住在不同城市的公司。
为了让事情更清楚,我将举一个例子:
表1:
id name
1 Company1
2 Company2
3 Company3
4 Company4
5 Company5
6 Company6
表2:
id name city idK
1 EMP1 city1 1
2 EMP2 city2 1
3 EMP3 city3 1
4 EMP4 city4 1
5 EMP5 city1 2
6 EMP6 city2 2
7 EMP7 city3 2
8 EMP8 city1 3
9 EMP9 city2 3
10 EMP10 city3 3
11 EMP11 city1 4
12 EMP12 city2 4
13 EMP13 city3 4
14 EMP14 city4 4
15 EMP15 city5 4
16 EMP16 city1 5
17 EMP17 city2 5
18 EMP18 city1 5
19 EMP19 city3 5
20 EMP20 city3 5
21 EMP21 city2 5
22 EMP22 city1 6
23 EMP23 city8 6
24 EMP24 city1 6
25 EMP25 city15 6
我腾出空间,这样更容易看。
因此,在idK=1中,我们有四名员工,他们都来自不同的城市,因此公司1应该会有结果。
idK=2和idK=3的员工一般不到4人,所以公司2和公司3都不在。
idK=4和idK=1是很好的相同原因,但是idK=5和idK=6不在,因为虽然他们有四个或更多的雇员,但他们彼此之间并不是来自不同的城市。
我发现了与我类似的问题和一些解决方案,但没有一个对我来说足够好,或者我就是不能让它们发挥作用,所以如果有人能向我解释在这种情况下该怎么做,我会非常感激。
最佳答案
这在这里有用。
select t1.name from table2 t2
inner join table1 t1 on t2.idK = t1.id
group by t2.idk,t1.name
having count(distinct city) > 3
这是我用来在db fiddle上测试的数据。
CREATE TABLE table2 (id int, name varchar(100), city varchar(100), idK int);
INSERT INTO table2 (id,name,city,idK)
VALUES (1,'EMP1','city1',1),
(2,'EMP2','city2',1),
(3,'EMP3','city3',1),
(4,'EMP4','city4',1),
(5,'EMP5','city1',2),
(6,'EMP6','city2',2),
(7,'EMP7','city3',2),
(8,'EMP8','city1',3),
(9,'EMP9','city2',3),
(10,'EMP10','city3',3),
(11,'EMP11','city1',4),
(12,'EMP12','city2',4),
(13,'EMP13','city3',4),
(14,'EMP14','city4',4),
(15,'EMP15','city5',4),
(16,'EMP16','city1',5),
(17,'EMP17','city2',5),
(18,'EMP18','city1',5),
(19,'EMP19','city3',5),
(20,'EMP20','city3',5),
(21,'EMP21','city2',5),
(22,'EMP22','city1',6),
(23,'EMP23','city8',6),
(24,'EMP24','city1',6),
(25,'EMP25','city15',6);
Create TABLE table1 (id int,name varchar(100));
INSERT INTO table1 (id,name)
VALUES (1,'Company1'),
(2,'Company2'),
(3,'Company3'),
(4,'Company4'),
(5,'Company5'),
(6,'Company6');
关于mysql - 如何在一列中选择具有相同值但在另一列中所有列必须彼此不同的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50725789/