我有这张桌子:
SUBSCRIPTION
NAME SUBSCRIBER
它本质上是一个包含相互订阅的人员列表的表格。我想编写一个查询,输出一个元组列表,这样,如果集合 B 代表所有订阅 A 的人,B 也代表那些 A 不订阅的人。即,查找未相互订阅的人员列表。
这是我写的查询:
SELECT A.name, B.name
FROM subscription AS A, subscription AS B
WHERE A.subscriber=B.name AND A.name!=B.subscriber;
即,它应该显示两列 A 和 B,其中 B 订阅 A 而 A 不订阅 B。
我得到的只是很多行重复的垃圾。我在这做错了什么?
好吧,我在说明样品时犯了一个错误。样本是这样的:
梅丽莎,琼订阅约翰。查尔斯,约翰订阅琼。查尔斯订阅了梅丽莎。梅丽莎,琼订阅查尔斯。
第一部分是指订阅者列,第二部分是指名称列。即,约翰的名字和梅丽莎,琼订阅约翰。
因此,它应该输出 (melissa,john) 因为 john 不订阅 melissa。
这将如何改变查询?