【发布时间】:2014-09-29 16:38:02
【问题描述】:
我是 Teradata 的新手,我遇到了以前使用的数据库没有的问题。 基本上,我试图减少 where 子句内的子查询中返回的行数。我之前使用 ROWNUM 函数执行此操作没有问题。
我之前的查询是这样的:
SELECT * FROM myTable
WHERE field1 = 'foo' AND field2 in(
SELECT field2 FROM anotherTable
WHERE field3 = 'bar' AND ROWNUM<100);
因为我不能在 TD 中使用 ROWNUM,所以我一直在寻找等效的函数,或者至少是那些可以让我到达我想要的位置的函数,即使它们并不完全等效。 我找到并尝试了:ROW_NUMBER、TOP 和 SAMPLE。
我尝试了 ROW_NUMBER(),但 Teradata 不允许在 WHERE 子句中使用分析函数。 我尝试了 TOP N,但子查询不支持此选项。 我尝试了 SAMPLE N,但子查询也不支持它。
所以...我不得不承认我现在有点卡住了,想知道是否有任何解决方案可以让我使用 Teradata 限制子查询中返回的行数,这与到目前为止我做了什么? 此外,如果没有,如何以不同的方式构建查询以适当地与 Teradata 一起使用?
谢谢!
【问题讨论】:
标签: sql subquery limit teradata