sql - 更改列值(实际上没有在数据库中更新它)并将多行列为一行上的列值
问题描述
所以,我使用 Heroku 数据剪辑来快速监控信息。这个 SQL 片段:
SELECT name, owner, id AS guild
FROM rooms JOIN guilds ON rooms.name=guilds.room
ORDER BY rooms.name DESC
给我
我怎样才能改变它,以便所有guild
共享相同的 sname
都列在它下面guild
,匹配的 sowner
旁边有一个星号?(我想以这种方式删除所有者列)
基本上,
Testing
422950512657432578
431220877250658305*
BFClannet
337583271787626503*
216908635987509249
或类似的规定。
编辑:(也许每个都name
应该是一列,并且guilds
应该在列下作为单独的行列出)
解决方案
这可以满足您的要求:
with t as (
select 'Testing' as name, 431220877250658305 as owner, 422950512657432578 as guild union all
select 'Testing' as name, 431220877250658305 as owner, 431220877250658305 as guild union all
select 'BFClannet' as name, 337583271787626503 as owner, 337583271787626503 as guild union all
select 'BFClannet' as name, 337583271787626503 as owner, 216908635987509249 as guild
)
select coalesce(guild, name)
from ((select t.name, t.guild || (case when t.owner = t.guild then '*' else '' end) as guild
from t
) union all
(select distinct t.name, null
from t
)
) x
order by name, guild nulls first;
这是一个 db<>fiddle。
这个想法是计算你想要的行。最大的技巧是订购它们,所以名字是第一位的。
推荐阅读
- vue.js - Vue.js/Vuetify:如何使 v-card-actions 反应?
- flutter - 是否可以在 Dart 中屈服于外部作用域?
- amazon-s3 - 如何在 Solaris 上构建 AWS C++ SDK?
- r - R:从向量中删除 -Inf 和 Inf
- git - 使用嵌套子模块克隆 repo 不起作用
- apache-spark - 替换火花嵌套属性名称中的无效字符
- c# - 我可以制作一个模板,或者在 C# 中生成一堆几乎相同的属性吗?
- php - 重定向到外部 url,导致 404 laravel 5.8
- r - 删除具有任意 N 个变量的所有行
- android - EditText 如何在 Android 4.4 KitKat Api 19 中设置 colorControlActivated?