我希望能够比较同一SQL表中的2条记录,并告诉他们是否不同。我不需要说出什么是不同的,只需要说它们是不同的。
此外,我只需要比较记录中10列中的7列。即)每条记录有10列,但我只关心其中的7列。
这可以通过SQL实现吗?或者我是否应该获取C#中的记录,并对它们进行散列处理,以查看它们是否具有不同的值?
发布于 2012-04-24 19:50:01
您可以像这样编写group by查询:
SELECT field1, field2, field3, .... field7, COUNT(*)
FROM table
[WHERE primary_key = key1 OR primary_key = key2]
GROUP BY field1, field2, field3, .... field7
HAVING COUNT(*) > 1
这样,您就可以获得字段1到7具有相同值的所有记录,以及出现的次数。
使用OR或IN (...)添加括号之间的部分,以限制搜索重复项。
发布于 2012-04-24 20:02:37
IF EXISTS (SELECT Col1, Col2, ColEtc...
from MyTable
where condition1
EXCEPT SELECT Col1, Col2, ColEtc...
from MyTable
where condition2)
BEGIN
-- Query returns all rows from first set that are not column for column
-- also in the second (EXCEPT) set. So if there are any, there will be
-- rows returned, which meets the EXISTS criteria. Since you're only
-- checking EXISTS, SQL doesn't actually need to return columns.
END
发布于 2012-04-24 19:50:48
不需要散列。正常的相等比较就足够了:
select isEqual = case when t1.a <> t2.a or t1.b <> t2.b bbb then 1 else 0 end
https://stackoverflow.com/questions/10304942
复制