小编zma*_*ter的帖子

如何确定表是否具有一些唯一列

我使用的是MS SQL Server.

我已经交了一些没有约束的大桌子,没有钥匙也没有.

我知道有些列具有唯一值.对于给定的表,是否有一种聪明的方法来查找具有唯一值的cols?

现在,我通过计算是否存在与表中的行一样多的DISTINCT值来手动为每列执行此操作.

SELECT COUNT(DISTINCT col) FROM table
Run Code Online (Sandbox Code Playgroud)

可能会让一个cusor循环遍历所有列,但想知道是否有人知道更聪明或内置函数.

谢谢.

sql sql-server unique

11
推荐指数
1
解决办法
2万
查看次数

SQL游标中表变量的范围

如果我在MS SQL 2008 R2中运行以下内容,我会得到意外的结果.

create table #DataTable (someID varchar(5))
insert into #DataTable 
values ('ID1'),('ID2'),('ID3'),('ID4'),('ID5')

declare @data varchar(8);

declare myCursor cursor for
select someID from #DataTable

open myCursor
FETCH NEXT FROM myCursor INTO
@data

WHILE(@@Fetch_Status >=0)
BEGIN 

    declare @tempTable table (someValue varchar(10))

    insert into @tempTable select @data + '_ASDF'
    select * from @tempTable    

FETCH NEXT FROM myCursor INTO
@data

END

close myCursor
deallocate myCursor

drop table #DataTable
Run Code Online (Sandbox Code Playgroud)

最后一次迭代的结果:

someValue
ID1_ASDF
ID2_ASDF
ID3_ASDF
ID4_ASDF
ID5_ASDF
Run Code Online (Sandbox Code Playgroud)

我原以为只会看到

someValue
ID5_ASDF
Run Code Online (Sandbox Code Playgroud)

似乎表变量@tempTable保持在游标迭代之间的范围内 - 但是如何在每次迭代中重新声明变量?对我毫无意义.

我解决了 …

sql scope temp-tables cursor table-variable

5
推荐指数
1
解决办法
5345
查看次数

SQL在不同的表中查找相同的列

我有2张非常大的桌子.我试着找出他们的共同点.

它们没有相同数量的列.我可以只是查看每个表中的每个列名并进行比较 - 但它们都有数百列(我必须为许多这样的表执行此操作).

我使用的是MS Sql server.

任何一个都没有约束,也没有外键.

我该怎么做呢?

像这样的东西:

select * AS "RES" from Table1 where RES IN (select * column from Table2)
Run Code Online (Sandbox Code Playgroud)

提前致谢.

sql union compare join

1
推荐指数
1
解决办法
3万
查看次数

标签 统计

sql ×3

compare ×1

cursor ×1

join ×1

scope ×1

sql-server ×1

table-variable ×1

temp-tables ×1

union ×1

unique ×1