我尝试从数据库中的当前数据中获取具有唯一值的列 和具有唯一值的列组。
例如,对于具有唯一值的列 我有这样的疑问:
SELECT t.columnToCheck
FROM table t
WHERE EXISTS(SELECT 1 FROM table d WHERE d.t.columnToCheck = t.t.columnToCheck and d.id <> t.id)
我所做的就是检查表的每一列是否都有数据,没有结果的列就是我认为唯一的列。这对我来说是可行的。
我现在要做的是检查是否存在具有唯一值的列组。 WHERE中的1x、2x和3x不重复,我会将其视为唯一的列组。
例如:
在本例中,对于存在的数据,我们可以说name和shortname之间的组合是唯一的,因为它在任何其他列中都不重复。但是,name和email的组合不是唯一的,因为它是重复的。我需要的是从所有列中获取所有唯一的组合。
我如何检查所有这些列组合,以检查它在一个快速和容易的方式?
我已经尝试手动执行列组的一些组合,但不可能手动测试列的所有组合。
1条答案
按热度按时间zu0ti5jz1#
检查重复项有两种基本机制,如您所发现的
WHERE NOT EXISTS
:或者,如果您不需要特定的行,但只想知道重复的值,或者存在重复值,则可以使用
GROUP BY HAVING COUNT(*) > 1
COUNT(*)
并不是绝对必要的,但如果您怀疑计数将超过2,则它可能有助于分析。*