我使用的是MS SQL Server.
我已经交了一些没有约束的大桌子,没有钥匙也没有.
我知道有些列具有唯一值.对于给定的表,是否有一种聪明的方法来查找具有唯一值的cols?
现在,我通过计算是否存在与表中的行一样多的DISTINCT值来手动为每列执行此操作.
SELECT COUNT(DISTINCT col) FROM table
Run Code Online (Sandbox Code Playgroud)
可能会让一个cusor循环遍历所有列,但想知道是否有人知道更聪明或内置函数.
谢谢.
如果我在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保持在游标迭代之间的范围内 - 但是如何在每次迭代中重新声明变量?对我毫无意义.
我解决了 …
我有2张非常大的桌子.我试着找出他们的共同点.
它们没有相同数量的列.我可以只是查看每个表中的每个列名并进行比较 - 但它们都有数百列(我必须为许多这样的表执行此操作).
我使用的是MS Sql server.
任何一个都没有约束,也没有外键.
我该怎么做呢?
像这样的东西:
select * AS "RES" from Table1 where RES IN (select * column from Table2)
Run Code Online (Sandbox Code Playgroud)
提前致谢.