mysql如何选择另一列中具有相同值的字段和另一个表的列中的相同值?

时间:2016-04-11 18:23:00

标签: mysql database select

这是完全诚实的作业的一部分,不是那么重要,但仍然如此。 所以,假设我们有以下表格:

        Song                                      Singer_prod

composer     title                            singer      sing_title
   A          a1                                S1            b1
   A          a2                                S3            c3
   B          b1                                S3            c1
   C          c1                                S1            a1
   C          c2                                S1            a2
   C          c3                                S3            c2 
                                                S2            a1

现在,问题是要选择那些只有一位歌手演唱过的作曲家。 例如,作曲家 B 只有一个标题, b1 ,仅由 S1 演唱。

另外,作曲家 C 写了 c1,c2,c3 ,所有歌曲只能由 S3 演唱。 这两位作曲家应该出现在结果中。

相比之下,来自作曲家的 A 歌曲, a2 仅由 S1 演唱,但 a1 是由 S1 S2 演唱,所以 A 不应该出现在结果中。

我尝试了无数嵌套SELECTS,GROUP BY和WHERE的组合,到目前为止没有运气。我唯一可以肯定的是,某个地方应该需要一个伯爵(歌手)= 1,但到目前为止这些都是徒劳无功的。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:-1)

SELECT Composer, Singer FROM Song x
INNER JOIN Singer_prod y on x.title = y.sing_title
GROUP BY Composer, Singer
HAVING COUNT(Distinct Singer) = 1