我在 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;
我认为你的问题有点含糊,但我认为下面的查询可以给你一个解决问题的想法,这个查询可以排除最频繁的行:
Select * From seat_marker
Where Marker_ID <> (Select Top 1 Marker_ID From seat_marker Group by Marker_ID Order By Count(*) Desc)