如何将同一CVE_ID的多行SQL查询结果合并为单行
解决方案
你可以利用聚合函数实现需求,因为't'的优先级高于'f'(无论作为布尔值还是字符串),用MAX()函数就能保留每个字段中存在的't'值,具体SQL如下:
SELECT "CVE_ID", MAX("V19_200") AS "V19_200", MAX("V20") AS "V20", MAX("V20_100") AS "V20_100", MAX("V21") AS "V21", MAX("V21_100") AS "V21_100", MAX("V21_200") AS "V21_200" FROM cve_table WHERE "CVE_ID" = 'CVE-2022-22965' GROUP BY "CVE_ID";
原理说明
- 你的数据中每个字段在多行里仅存在一个't',其余均为'f',
MAX()函数会自动选取每个字段的最大值(即't'),最终将多行合并为一行结果。 UNION或UNION ALL用于合并不同查询的结果集,并不适用于当前的行合并需求。
内容的提问来源于stack exchange,提问作者SamiEnazi
相关产品推荐
相关产品推荐

