問:假如我的一個表裡含有(a,b,c,d)和(a,b)形成組合鍵。我能在列值中寫這個查詢嗎?例如:
代碼如下:
select a,c,d from mytable
where (a,b) in ((1,2),(1,4),(1,5))
答:可以。
如果你懷疑有些SQL架構是否有效,就通過Mimer Validator運行一下。在這種情況中,你的查詢(你登錄校驗器中的查詢)將得到如下結果:
* 在SQL-92中, 無效
* 在SQL-99和SQL_2003中, 有效,並帶有如下注釋:
F641, "Row and table constructors"
T051, "Row types"
F561, "Full value expressions"
這時將會用到Core SQL-99以外的如下特征或Core SQL-200x (draft):
F641, "Row and table constructors"
T051, "Row types"
F561, "Full value expressions"
也就是說如果你特殊的數據庫系統不支持那些選擇特征,你仍然會收到錯誤信息。
也許你想嘗試以下查詢:
SELECT a,c,d
FROM mytable
WHERE a = 1 AND b = 2
OR a = 1 AND b = 4
OR a = 1 AND b = 5
這個查詢運行十分順利,因為(a,b)就是一個鍵,所以用索引查詢會比較有效。