从tablue中选择,其中值在另一列的同一表上重复

时间:2019-07-18 22:04:34

标签: mysql sql

我有一张这样的桌子

idGoal | idMatch | minute
  1    |    1    |   30
  2    |    1    |   40
  3    |    2    |   30
  4    |    3    |   45

我只想获得在不同比赛中分钟相同的进球。 它显示了idGoal 1和3。

2 个答案:

答案 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)上的索引。