我想在列上輸入fk或索引,只要這樣的約束不存在。如果它存在,名稱不是我想要的名稱,只需重命名它,否則什麼都不做。爲此,我正在檢查SQL服務器的sys表或Oracle的all _...表。sql複雜選擇語句
這裏是我的問題簡化爲可能:
index_name column_name
on_multiple_columns1 a
on_multiple_columns1 b
on_multiple_columns2 a
on_multiple_columns2 b
on_multiple_columns2 c
on_single_column1 b
on_single_column2 c
現在我需要一個選擇INDEX_NAME到@constraintToRename聲明,這樣我就可以在@constraintToRename重命名爲「MYNAME」,如果它存在,並且尚未有名字'myName',或者如果沒有創建一個新的。 我與有關列和「MYNAME」 如信息來:
選擇INDEX_NAME到@toRename從「some_index_table」加入「some_other_index_table」 其中「指數僅在指定的列什麼,我進入現在,所以沒有多列索引返回等等'
在我的情況下,我想輸入一個索引myName =測試列b。當我只選擇列b的名稱時,我會得到3個索引(on_multiple_columns1,on_multiple_columns2和右邊的on_single_column1),但我只需要on_single_column1,因此我可以將其重命名爲測試。 我該如何做到這一點? 喜歡的東西
select ... where column = 'my_column' and count(index_names) = 1
或
select .... where column = 'my_column' and index_name !corresponds to other columns :)
我如何在SQL表達呢? 感謝 SSS
使用[按](HTTP:// MSDN。 microsign.com/en-us/library/ms177673.aspx)index_name [having](http://msdn.microsoft.com/en-us/library/ms180199)count(*)= 1 – 2012-08-02 22:25:41
@NikolaMarkovinović:問題這就是說,當我有where列='my_column',那麼所有索引都有count(*)= 1。當我沒有column ='my_column'時,那麼我得到所有index_names指定只在一列上 - >在這種情況下on_single_column1和2,但我只想要對應於列b - > on_single_column1 – radio 2012-08-03 07:16:50