sql:当列中的元素只重复两年或两年以上时,需要返回结果

envsm3lx  于 2021-06-19  发布在  Mysql
关注(0)|答案(3)|浏览(257)
Div_ID  TY_YEAR
10040   2017
10045   2017
10050   2017
10050   2018
10052   2017
10052   2018
10053   2017
10053   2018

我需要在2017年和2018年结果集中特别提供的div\u id结果集:

Div_ID  TY_YEAR
    10050   2017
    10050   2018
    10052   2017
    10052   2018
    10053   2017
    10053   2018
mum43rcc

mum43rcc1#

你可以试试这个-

select *
  from your_table
 where div_id in (select div_id
                    from your_table
                   where ty_year in (2017, 2018)
                   group by div_id
                  having count(distinct ty_year) >= 2)
dm7nw8vv

dm7nw8vv2#

我将通过按年份分组并计算不同年份的数量来获得ID列表,然后,您可以查询具有这些ID的所有行:

SELECT *
FROM   mytable
WHERE  div_id IN (SELECT   div_id
                  FROM     mytable
                  WHERE    ty_year IN (2017, 2018)
                  GROUP BY div_id
                  HAVING   COUNT(DISTINCT td_year) = 2)
whlutmcx

whlutmcx3#

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id INT NOT NULL
,year INT NOT NULL
,PRIMARY KEY(id,year)
);

INSERT INTO my_table VALUES
(40,'2017'),
(45,'2017'),
(50,'2017'),
(50,'2018'),
(52,'2017'),
(52,'2018'),
(53,'2017'),
(53,'2018');

SELECT DISTINCT x.* 
  FROM my_table x 
  JOIN my_table y
    ON y.id = x.id
   AND y.year <> x.year;
 WHERE y.id IS NULL;

  +----+------+
  | id | year |
  +----+------+
  | 50 | 2017 |
  | 50 | 2018 |
  | 52 | 2017 |
  | 52 | 2018 |
  | 53 | 2017 |
  | 53 | 2018 |
  +----+------+

相关问题