mysql - 根据标识符和来自另一行的值选择行

标签 mysql sql

我有一个 mySQL 数据集,如下所示:

ID    PARENT_ID    VALUE

1     100          This comment should be approved
2     100          Y
3     101          Another approved comment
4     101          Y
5     102          This comment is not approved
6     102          N

我需要构建一个 SQL 查询来选择具有匹配的 parent_id 和相应的 Y 值的行(但忽略结果中具有单个字母作为值的行)以导致:

ID    PARENT_ID    VALUE

1     100          This comment should be approved
3     101          Another approved comment

我的想法是使用GROUP BY 来组合列,但我不知道如何根据 Y/N 值进行选择。

这里可能有一个解决方案How do I select a row based on a priority value in another row?但我不认为它问的是完全相同的问题。

有什么想法吗?

最佳答案

尽管您可以将其表示为聚合,但您可以使用 exists 来表示:

select d.*
from dataset d
where d.value <> 'Y' and
      exists (select 1
              from dataset d2
              where d2.parent_id = d.parent_id and d2.value = 'Y'
             );

这个版本可能更高效。

关于mysql - 根据标识符和来自另一行的值选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29401627/

相关文章:

mysql - 如何检查 MySQL 中的 BIT 数据类型?

mysql - 如何给出多于一个的having子句

mysql - 如何使用 MySQL 记录 Windows 7 网络流量和磁盘使用情况?

javascript - PHP - GET url 忽略换行符

sql - 选择一个月的第一天和当前日期之间的所有日期

c# - SQL 良好实践和外键

mysql - 如何通过两个过滤器来加速mysql查询

mysql - 连接数据库中的两个名字

mysql更新多列并比较多行中的值

sql - 如何定义要在 VB.NET 中使用的 Sql Server 连接字符串?