【发布时间】:2013-05-30 11:31:06
【问题描述】:
我有一个包含以下值的表:“user_id, text, text_lang, user_lang”。
字段 text_lang 包含一个表示文本语言的区域设置快捷方式('en'、'de')。我现在想通过选择每个 user_id 出现次数最多的 text_lang 来设置(未知/空)“user_lang”。
我有一个有效的 select 语句,它返回每个 user_id 出现次数最多的 text_lang,但我不知道如何根据 ID 更新每行的 user_lang。
SELECT user_id, text_lang
FROM (
SELECT user_id,
text_lang,
max(text_lang_count) OVER (PARTITION BY user_id) max_count,
text_lang_count
FROM (
SELECT user_id,
text_lang,
COUNT(text_lang) AS text_lang_count
FROM test
GROUP BY user_id, text_lang
) AS xx
) AS xy
WHERE tweet_lang_count = max_count
我假设(但不确定)MySQL/SQL: Update with correlated subquery from the updated table itself 包含与我的问题密切相关的内容,但我无法使该解决方案适应这个特定问题。
【问题讨论】:
标签: sql postgresql subquery