這實際上是一個通用的特別查詢問題。很多時候,我們運行在開發和測試環境即席查詢,喜歡簡單的查詢:在主鍵上匹配時沒有明確命名SQL Server中的鍵
SELECT *
FROM dbo.User
WHERE UserID = 2
是否有任何功能建立一個可以在WHERE
子句的主鍵沒有顯式定義列的名稱。
似乎在邏輯上,我認爲,你可以只在一個表上的單一主鍵和SQL Server有這方面的知識,您可以使用類似語法如下:
SELECT *
FROM dbo.User
WHERE PK = 3
凡PK
是一個通用term由SQL Server爲表中存在的當前主鍵提供。
原因,這可能不存在:
- 怎麼樣的組合鍵,這將不爲他們工作
- 在生產查詢你不會使用它
- 這是唯一真正的語法糖
總之一句話:** NO **。如果你想定義一個WHERE條件,你需要指定你想要檢查的列 –
你是對的,沒有內建的東西可以做到這一點。要實現它,你將不得不使用動態SQL,但對於性能/可維護性/安全性的原因,它仍然不是一個好主意。 – Bridge
如果PK是標識列,則可以使用'WHERE IDENTITYCOL = 3'。 –