2013-10-09 20 views
2

下面的代碼返回錯誤信息:如何使用UNIQUE操作SQL

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) 

的員工,工,科是一個非常自我解釋的關係。那麼在這種情況下,如何正確使用UNIQUE運算符?

順便說一下,這是我的教授顯示的語法,但我無法弄清楚。我只找到在CREATE TABLE報表中使用UNIQUE的結果。我看到使用DISTINCT,但不是UNIQUE

SCHEMA:

作品= {FK(eid),FK(初級(did))}

的Emp = {初級(eid),ENAME,年齡,工資}

系= {初級(did),DNAME,預算,經理ID}

+2

你想達到什麼目的?你使用的是什麼DBMS? – Mureinik

+0

使用SQL Server 2012(至少我認爲是DBMS) – Bob

+0

好的...和'你想達到什麼目的?' –

回答

1

SELECT UNIQUE是Oracle的SQL風格所支持的舊語法。它與SELECT DISTINCT同義。

使用SELECT DISTINCT,因爲這是標準的SQL和SELECT UNIQUE是非標準的,並在比Oracle,選擇唯一其他數據庫品牌可能根本不承認。

Duplicate

+0

我不能在'WHERE'語句中使用'UNIQUE'或'DISTINCT'嗎? – Bob

+0

我不是什麼獨特的或DIstinct可以在where子句中使用。 – pordi

1

「獨特的」 是不是我所見過的(超過一些年/產品)有效的SQL語法

你的教授可能是:

  • 一個。測試你
  • b。使用「僞代碼」
  • 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) 
1

有一個名爲UNIQUE SQL標準的邏輯運算符。如果其輸入中的所有元組都不相同,則評估爲true。

但它沒有在任何版本的SQL服務器中實現我知道的