选择重复值,排除最常用的值

问题描述 投票:0回答:1

我在 MySQL 中有两个相关的表,看起来像这样:

CREATE TABLE `marker` (
  `ID` bigint(20) NOT NULL AUTO_INCREMENT,
  `SEASONCD` varchar(32),
  `ITEMCD` varchar(32),
  `PRICETYPECD` varchar(32)
);

CREATE TABLE `seat_marker` (
  `ID` bigint(20) NOT NULL AUTO_INCREMENT,
  `MARKER_ID` bigint(20)
);

我想选择所有重复的行,不包括

seat_marker
表最常引用/连接的行。换句话说,我想列出除“原始”之外的所有重复项,其中“原始”被定义为
seat_marker.MARKER_ID
中出现次数最多的行。

我能得到的最接近的是这个,它列出了所有重复的值及其分配的数量。但不排除“原创”。

-- Select all duplicates, and list the number of times it's referenced in the seat_marker table
SELECT 
  n1.id, n1.SEASONCD, n1.ITEMCD, n1.PRICETYPECD, (
    SELECT COUNT(1) 
    FROM seat_marker 
    WHERE MARKER_ID = n1.id
  ) active_assignments
FROM marker n1, marker n2 
WHERE
    n1.id <> n2.id AND 
    n1.SEASONCD = n2.SEASONCD AND 
    n1.ITEMCD = n2.ITEMCD AND
    n1.PRICETYPECD = n2.PRICETYPECD
GROUP BY id, SEASONCD, ITEMCD, PRICETYPECD, active_assignments
ORDER BY SEASONCD, ITEMCD, PRICETYPECD, active_assignments DESC, id;
sql mysql
1个回答
0
投票

我认为你的问题有点含糊,但我认为下面的查询可以给你一个解决问题的想法,这个查询可以排除最频繁的行:

Select * From seat_marker 
Where Marker_ID <> (Select Top 1 Marker_ID From seat_marker Group by Marker_ID Order By Count(*) Desc)
© www.soinside.com 2019 - 2024. All rights reserved.