如何解决Postgres区分大小写
我有一个查询,我在CASE
内使用DISTINCT ON
语句,如下所示:
SELECT
DISTINCT ON(COALESCE(users.cuid,events.uid),CASE WHEN events.props->>'prop' IS NULL THEN '$none' WHEN events.props->>'prop' = '' THEN '$none' ELSE events.props->>'prop' END)
COALESCE(users.cuid,events.uid) as coal_user_id,CASE WHEN events.props->>'prop' IS NULL THEN '$none' WHEN events.props->>'prop' = '' THEN '$none' ELSE events.props->>'prop' END AS _group_key_0,events.uid as event_uid
FROM events JOIN users ON events.uid=users.id
WHERE events.project_id='<>' AND timestamp>='<>' AND timestamp<='<>'
ORDER BY coal_user_id,_group_key_0,events.timestamp ASC
在运行时,出现此错误:
SELECT DISTINCT ON expressions must match initial ORDER BY expressions
我尝试在不同的on子句中使用诸如as _group_key_0
之类的别名,但这再次将错误引发为另一个错误。
有没有办法单独使用CASE语句并使其起作用?
解决方法
您必须在DISTINCT ON
子句的开头添加ORDER BY
子句中的表达式,如错误消息所示:
SELECT DISTINCT ON(COALESCE(users.cuid,events.uid),CASE WHEN events.props->>'prop' IS NULL THEN '$none'
WHEN events.props->>'prop' = '' THEN '$none'
ELSE events.props->>'prop'
END)
COALESCE(users.cuid,events.uid) as coal_user_id,CASE WHEN events.props->>'prop' IS NULL THEN '$none'
WHEN events.props->>'prop' = '' THEN '$none'
ELSE events.props->>'prop'
END AS _group_key_0,events.uid as event_uid
FROM events JOIN users ON events.uid=users.id
WHERE events.project_id='<>'
AND timestamp>='<>'
AND timestamp<='<>'
ORDER BY COALESCE(users.cuid,CASE WHEN events.props->>'prop' IS NULL THEN '$none'
WHEN events.props->>'prop' = '' THEN '$none'
ELSE events.props->>'prop'
END,events.timestamp ASC;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。