我有一张这样的桌子
idGoal | idMatch | minute
1 | 1 | 30
2 | 1 | 40
3 | 2 | 30
4 | 3 | 45
我只想获得在不同比赛中分钟相同的进球。 它显示了idGoal 1和3。
答案 0 :(得分:0)
您的表格:
CREATE TABLE goals
(idGoal INT, idMatch INT, minute TINYINT);
您的数据:
INSERT INTO goals
(idGoal, idMatch, minute)
VALUES
(1, 1, 30),
(2, 1, 40),
(3, 2, 30),
(4, 3, 45);
您的查询:
SELECT idGoal
FROM goals
WHERE minute IN
(
SELECT minute
FROM goals
GROUP BY minute
HAVING COUNT(*) > 1
);
您的结果:
idGoal
------
1
3
答案 1 :(得分:0)
我会使用exists
:
select g.*
from goals g
where exists (select 1
from goals g2
where g2.minute = g.minute and
g2.idMatch <> g.idMatch
);
特别是,exists
可以利用(minute, idMatch)
上的索引。