排除与另一行具有共享值的行的 SQL 联接
想显示 “mpr_metrics” 表中没有关联评论的行。但这里有一个问题:如果有一个指标与一个关联的评论,并且该评论也与另一个评论共享相同的开始时间,那么它应该被排除在结果集中。
例如,小提琴的结果是 “3”,但它应该只显示计数 “1”,因为只有 1 个量度 (id=5) 没有评论,也没有与另一条评论具有相同 start_time 值的评论。
CREATE TABLE mpr_metrics (
id INT,
start_time TIMESTAMP,
PRIMARY KEY (id)
);
CREATE TABLE mpr_metrics_reviews (
id INT,
metric_id INT,
PRIMARY KEY (id)
);
INSERT INTO mpr_metrics (id, start_time) values (1, '2024-09-16');
INSERT INTO mpr_metrics (id, start_time) values (2, '2024-09-16');
INSERT INTO mpr_metrics (id, start_time) values (3, '2024-09-09');
INSERT INTO mpr_metrics (id, start_time) values (4, '2024-09-09');
INSERT INTO mpr_metrics (id, start_time) values (5, '2024-09-11');
INSERT INTO mpr_metrics_reviews (id, metric_id) values (1, 1);
INSERT INTO mpr_metrics_reviews (id, metric_id) values (2, 3);
SELECT count(DISTINCT mpr_metrics.start_time)
FROM mpr_metrics
LEFT JOIN mpr_metrics_reviews
ON mpr_metrics.id = mpr_metrics_reviews.metric_id
WHERE mpr_metrics_reviews.id is null;
此 SELECT 的结果是 “3”,但结果应该是 “1”。