我有一种以这种格式显示的表格格式:
email | interest | major | employed |inserttime
jake@example.com | soccer | | true | 12:00
jake@example.com | | CS | true | 12:01
基本上,这是一个调查应用程序,用户有时会点击后退按钮添加新字段。我后来将INSERT
逻辑更改为UPSERT
,因此它只更新了行where email=currentUsersEmail
,但是对于在此代码更改之前插入的数据,单个用户有许多重复的条目。我已经尝试了一些没有运气的小组,因为它不断地说
ID列必须出现在GROUP BY子句中或用于 聚合函数。
当然会出现可能存在冲突数据的边缘情况,在这种情况下,用户可能会为使用的列输入true
,然后在第二种情况下他/她可以输入false
。目前我还没有考虑到这一点。
我只是想将这些值合并或展平为一行,在这种情况下它看起来像:
email | interest | major | employed |inserttime
jake@example.com | soccer | CS | true | 12:01
我猜我会采用最新的插入时间。我一直在scala / play中编写web应用程序,但是对于这个任务,我认为如果我不能直接通过psql来使用像python这样的语言可能会更容易。
答案 0 :(得分:1)
您可GROUP BY
使用MAX()
展平:
SELECT email, MAX(interest) AS interest,
MAX(major) AS major,MAX(employed) AS employed,
MAX(inserttime) AS inserttime
FROM your_table
GROUP BY email