【问题标题】:How to use the UNIQUE Operator SQL如何使用唯一运算符 SQL
【发布时间】:2014-01-29 05:58:11
【问题描述】:

以下代码返回错误信息:

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 运算符呢?

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

架构:

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

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

部门 = {primary(did), dname, budget, managerid}

【问题讨论】:

  • 你想达到什么目的?您使用的是什么 DBMS?
  • 使用 SQL Server 2012(至少我认为那是 DBMS)
  • 好的...和what are you trying to achieve?
  • 尝试在WHERE子句中使用UNIQUE关键字,否则查询完全不相关。我的意思是,除了让UNIQUE 部分工作之外,我并没有试图实现任何目标。
  • 你需要提供3个表关系,emp,dept & work,你想要达到的目标是什么

标签: sql sql-server-2012


【解决方案1】:

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

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

Duplicate

【讨论】:

  • 我不能在WHERE 条款中使用UNIQUEDISTINCT 吗?
  • 我不认为可以在 where 子句中使用 Unique 或 DIstinct。
【解决方案2】:

“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)

【讨论】:

    【解决方案3】:

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

    但在我所知道的任何版本的 SQL Server 中都没有实现

    【讨论】:

      猜你喜欢
      • 2021-08-19
      • 2021-08-30
      • 2019-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      相关资源
      最近更新 更多