我有一个 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/