sql - 选择表中所有列的最简单方法,在一列上具有不同的条件
问题描述
我有一个超过 100 列的表,我想编写一个选择查询,根据一列上的不同条件从表中选择所有列。
For ex->
Col_A Col_B Col_C Col_D
1 120 12 12
1 12 43 23
1 3 1 1
2 12 1 132
2 13 3 333
在上面的示例中,我想选择 Col_A 唯一的所有列(在源表中存在多个值的情况下首次出现)
Output
Col_A Col_B Col_C Col_D
1 120 12 12
2 12 1 132
解决方案
如果distinct on
支持语法,您可以这样做:
SELECT DISTINCT ON (Col_A) * FROM table_name
或者,如果支持窗口功能,则类似下面的内容将实现这一点。tmp 子查询通过 Col_A 值分别分配增量编号,而主查询仅选择第一条记录。
with tmp as (
SELECT *, row_number() OVER (PARTITION BY Col_A) AS num
FROM table_name
)
SELECT * FROM tmp WHERE num=1
如果您指定您正在使用的 sql 方言,可以找到更多想法。
推荐阅读
- powershell - 带有 Pester 测试的 PowerShell - 未找到测试文件且未提供脚本块
- html - 带有 flexbox 的 CSS 打字机动画
- javascript - 有没有办法在 Discord 机器人消息中的文本中添加工具提示?
- flutter - TextField 值消失了?
- processing - 歌曲不为按钮随机播放 - 处理
- c# - Imager Sharpening Kernel 产生奇怪的结果 C#
- javascript - 将 span 附加到相应的 li 元素(Javascript)
- python - 带有PIL和tkinter模块的python中的“没有这样的文件或目录”
- reactjs - 反应无效的钩子调用错误和故事书6
- python - 在python中查找数组的最长递增子序列