【发布时间】:2017-06-28 05:16:30
【问题描述】:
如果我的行话不正确,请原谅我。我还在学习!
我刚开始使用 Teradata,老实说,这很有趣。然而,我遇到了一个让我难过一段时间的路障。
我成功地从数据库中选择了一个表,如下所示:
ID service date name
1 service1 1/5/15 john
2 service2 1/7/15 steve
3 service3 1/8/15 lola
4 service4 1/3/15 joan
5 service5 1/5/15 fred
6 service3 1/3/15 joan
7 service5 1/8/15 oscar
现在我想再次搜索数据库以查找任何重复的 ID(例如:查看日期为 1/5/15 且名称为 john 的服务 service1 是否存在于具有不同 ID 的另一行中。)
起初,我做了这样的事情:
SELECT ID, service, date, name
FROM table
WHERE table.service = ANY(service1, service2, service3, service4, service5, service3, service5)
AND table.date = ANY('1/5/15', '1/7/15, '1/8/15', '1/3/15', '1/5/15', '1/3/15', '1/8/15')
AND table.name = ANY('john', 'steve', 'lola', 'joan', 'fred', 'joan', 'oscar');
但这给了我比我想要的更多的行。
示例:
ID service date name
92 service3 1/8/15 steve
对我没有用,因为我正在寻找与上表中任何其他 ID 具有相同服务、日期和名称组合的 ID。
这样的事情会很有利:
ID service date name
609 service3 1/8/15 lola
因为它与 ID 3 匹配。
我很好奇是否可以将三列(服务、日期、名称)视为一个向量,并可能以这种方式选择与其匹配的行?
前
......
WHERE (table.service, table.date, table.name) = ANY((service3,1/8/15,lola), (service1, 1/5/15, john), ...etc)
我的 Teradata 现在已关闭,所以我还没有尝试上面的示例。尽管如此,任何想法/反馈都非常感谢!
【问题讨论】:
-
您的预期输出中
609的ID 值从何而来? -
上表不是我的实际表;它看起来像它,所以我没有透露任何机密信息。但无论哪种方式,我正在寻找的这些重复项都是大量行的一小部分;不知道多少行,只知道加载不出来
-
我在下面给了你一个答案,试一试,如果它不起作用,请发表评论。