大家好,我会尽量具体和准确。
我四处寻找我的问题的答案,同时我做了两张桌子
在第一个表中,我有公司的名称和他们的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/

10-11 05:14