我将使用一个比喻性的例子。 有一个会议,我有一个我想邀请的人员名单。清单如下表所示:
People (id (PK), name, excludes)
每个人都可以拥有一个他不想见的人("排除"代表该人不想要的人)。
所以,我有以下列表
100, Jack, 101
101, John, NULL
102, Bob, 103
103, Mary, 102
这意味着杰克(身份证100)不想见约翰,约翰没有任何问题,而鲍勃并不想见到玛丽。相互而言,玛丽并不想见到鲍勃。
现在,我想选择邀请参加我的会议的人。 规则如下:
我随机选择(按rand()命令)所有人。这个人的重要性来自他的订单。
因此,例如,我按顺序检索以下列表:
Bob
John
Mary
Jack
这意味着Bob被邀请了。我知道鲍勃并不想见到玛丽。玛丽不会被邀请。 然后,有约翰。 John没有人遇到问题,他之前的人(bob)都没有问题。所以,约翰被邀请了。 玛丽不能被邀请,因为鲍勃(更重要的是因为他在名单中排名第一)并不想见到她。 杰克讨厌约翰!但是约翰被邀请了,所以杰克不能被邀请。
结果将是:
Bob
John
其他示例:我按顺序检索以下列表:
Mary
John
Jack
Bob
玛丽受邀,她不想见到鲍勃。 约翰被邀请,因为玛丽对他没有任何问题。他可以见到每个人。 杰克没有被邀请!他无法见到约翰。 鲍勃没有被邀请,因为他无法见到玛丽,玛丽也无法见到鲍勃。
结果将是:
Mary
John
我不知道如何根据需要创建查询。我真的不知道这样的查询是否可行。
这里有任何SQL查询专家吗?
谢谢!
我重写了所有问题以更好地解释我的问题