2

以下代码返回错误消息:

Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'UNIQUE'.

代码:

SELECT E.ename, D.dname
FROM Emp E, Dept D
WHERE UNIQUE
    (SELECT W.did
    FROM Works W
    WHERE W.did = D.did)

Employee, Works, Department 是一个非常不言自明的关系。那么UNIQUE在这种情况下如何正确使用运算符呢?

顺便说一句,这是我的教授展示的语法,但我无法弄清楚。我只找到使用UNIQUEinCREATE TABLE语句的结果。我看到使用DISTINCT,但不是UNIQUE

架构:

作品 = {fk( eid),fk(primary( did))}

Emp = {primary( eid), 姓名, 年龄, 薪水}

Dept = {primary( did), dname, budget, managerid}

4

3 回答 3

1

SELECT UNIQUE是 Oracle 风格的 SQL 支持的旧语法。它与 SELECT DISTINCT 同义。

使用SELECT DISTINCT因为这是标准 SQL,而 SELECT UNIQUE 是非标准的,并且在 Oracle 以外的数据库品牌中,可能根本无法识别SELECT UNIQUE 。

复制

于 2013-10-09T05:36:18.893 回答
1

SQL 标准中有一个称为 UNIQUE 的逻辑运算符。如果其输入中的所有元组都是不同的,则它的评估结果为真。

但它没有在我知道的任何版本的 SQL 服务器中实现

于 2014-01-28T21:58:11.167 回答
1

“WHERE UNIQUE”不是我见过的有效 sql 语法(几年/产品)

你的教授可能是:

  • 一个。考验你
  • 湾。使用“伪代码”
  • C。用逻辑术语思考,而不是精确的 sql
  • ……
  • z。记错了吗?

这里也没有形成谓词,与产生真/假的内容进行比较的是什么?

& 你的教授也会被建议使用 ANSI 连接语法

SELECT E.ename, D.dname
FROM Emp E
INNER JOIN Dept D ON /* what? */
WHERE /* what? could it be EXISTS ?*/
 exists
    (SELECT W.did
    FROM Works W
    WHERE W.did = D.did)
于 2013-10-09T06:21:14.630 回答