与使用UNIQUE的SQL查询混淆

时间:2019-07-03 10:17:10

标签: mysql sql unique

假设我们具有以下关系模型。 每个关系的主键粗体显示:

水手身份,姓名,等级,年龄)

出价,名称,颜色)

保留出价,出价,日期

我想到了以下查询:“找到在最多一次预订船101的水手。”给出的答案如下:

SELECT S.sid
FROM Sailors S
WHERE UNIQUE (SELECT R.sid
              FROM Reserves R
              WHERE R.bid = '101' AND S.sid = R.sid)

我没有得到的是此查询如何返回尚未预订此船的水手。我得到了嵌套查询,它返回了水手的所有sid,这些水手至少保留了一次出价为101的船。

然后使用“ UNIQUE”子句要求sid必须唯一,因此我们删除重复项,并从保留了bid = 101的船只的水手手中保留sid。

但是,我们会以某种方式使从未保留101号船的水手得到某种帮助吗?如果否,那么我们实际上不会计算最多保留101艘船的水手,而真正计算保留101艘船的水手恰好一次

我要纠正还是错过什么?

1 个答案:

答案 0 :(得分:0)

我对UNIQUE语法不熟悉,但是要获得结果,您可以简单地使用:

SELECT R.sid FROM Reserves R where R.did=101 GROUP BY R.sid HAVING count(*)=1