Amazon redshift 由于内部错误,不支持这种类型的相关子查询模式的红移

Amazon redshift 由于内部错误,不支持这种类型的相关子查询模式的红移,amazon-redshift,Amazon Redshift,当我运行第一个查询时,所有查询都正常运行: select uid, (select top 1 city from UserData where UserData.uid = #uids.uid group by city) from #uids; 问题是,当我添加按计数排序(城市)时,我得到一个错误:由于内部错误,不支持这种类型的相关子查询模式 select uid, (select top 1 city from UserData where UserData.uid = #uids.u

当我运行第一个查询时,所有查询都正常运行:

select uid,
(select top 1 city from UserData where UserData.uid = #uids.uid 
group by city)
from #uids;
问题是,当我添加按计数排序(城市)时,我得到一个错误:由于内部错误,不支持这种类型的相关子查询模式

select uid,
(select top 1 city from UserData where UserData.uid = #uids.uid 
group by city
order by count(city))
from #uids;

该错误表示子查询不起作用,这一点很明显,因为不能在SQL中使用ORDER子句中的函数。只能在SELECT和HAVING子句中使用它们

如果要按
计数(城市)
订购,应将其添加到带有别名和按别名订购的SELECT子句中。因此,您的子查询可以如下所示:

(SELECT city, COUNT(*) AS city_count
FROM UserData
WHERE UserData.uid = #uids.uid
GROUP BY city
ORDER BY city_count
LIMIT 1)

我将使用红移中的
行编号()
来执行此操作:

select u.uid, ud.city
from uids u left join
     (select uid, city, count(*) as cnt,
             row_number() over (partition by uid order by count(*) desc) as seqnum
      from UserData ud
      group by uid, city
     ) ud
     on ud.uid = u.uid and seqnum = 1;

您也可以在SQL Server中尝试此操作。

“因为您不能在SQL中使用ORDER子句中的函数”。您可能需要重新检查您的索赔