我想在列上输入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