mysql - 选择查询并过滤至少一个匹配项

标签 mysql group-by

我尝试使用 MySQL 从下表中选择数据:

INSERT INTO `test` (`id_location`, `id_sector`, `id_group`) VALUES
(1, 1, 2),
(2, 1, 2),
(3, 1, 3),
(4, 3, 3),
(5, 2, 4),
(6, 3, 4),
(7, 2, 5),
(8, 1, 5),

我想选择 id_sector = 1 的行,但我还需要返回与查询返回的组值相同的任何行。例如:

SELECT * FROM `test` WHERE `id_sector` = `1`

将返回行id_location 1、2、3和8,但我会丢失具有id_location 4和7的行,这是我需要的,因为它们具有相同的id_group(3 和 7)

最佳答案

您应该首先获取与您选择的 id_sector 相对应的 id_groups 的不同列表,然后根据该列表进行查询:

SELECT * FROM `test` WHERE `id_group` IN
    (SELECT DISTINCT `id_group` FROM `test` WHERE `id_sector` = 1)

关于mysql - 选择查询并过滤至少一个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50029635/

相关文章:

mysql - 使用 group by 子句检索的记录总和

python - GroupBy 操作使用整个数据框对值进行分组

php - 如何将我不想在其中包含数据的 mySQL 表的列显示为空?

php - 如何在 PHP 中获取 XML 文件的值?

mysql - Laravel 3 - Eloquent save() 一遍又一遍地保存错误的值

python - 在不更改组顺序的情况下按第一个值对组进行排序

performance - 尽管结果数量减少了 25%,但对数据进行分组会减慢查询速度

MySQL:聚合函数:按连接变量分组

mysql - SQL 操作数错误

php - INSERT SET :id if row does not exist, UPDATE WHERE :id 否则