mysql - 如何使用MySql根据表中的偏好顺序选择行值
问题描述
我有一个表作为 data_attributes 列 data_type
SELECT * FROM DATA_ATTRIBUTES;
DATA_TYPE
----------
NAME
MOBILE
ETHINICITY
CC_INFO
BANK_INFO
ADDRESS
Bank_info, CC_info 归类为 Risk1,
移动,种族分类为 Risk2,
姓名、地址归类为 Risk3
我应该得到风险分类作为输出,
例如:如果任何行包含 Risk1 类型,则输出应为 Risk1,否则,如果任何行包含 Risk2 类型,则输出应为 Risk2,否则如果任何行包含 Risk3 类型,则输出应为 Risk3
我为此写了下面的查询
SELECT COALESCE(COL1,COL2,COL3) FROM
(SELECT
CASE WHEN DATATYPE IN ('BANK_INFO','CC_INFO') THEN 'RISK1' ELSE NULL END AS COL1,
CASE WHEN DATATYPE IN ('MOBILE','ETHINICITY') THEN 'RISK2' ELSE NULL END AS COL2,
CASE WHEN DATATYPE IN ('NAME','ADDRESS') THEN 'RISK3' ELSE NULL END AS COL3
FROM DEMO.TPA_CLASS1) A;
所需的输出是:Risk1(只有 1 个值)
请给出一些想法来实现这一点。
解决方案
您可以使用条件聚合:
SELECT
CASE
WHEN MAX(DATATYPE IN ('BANK_INFO','CC_INFO')) = 1 THEN 'RISK1'
WHEN MAX(DATATYPE IN ('MOBILE','ETHINICITY')) = 1 THEN 'RISK2'
WHEN MAX(DATATYPE IN ('NAME','ADDRESS')) = 1 THEN 'RISK3'
END AS RISK
FROM DEMO.TPA_CLASS
推荐阅读
- c++ - 如何将 xt::xfunction(来自 xtensor,在 c++ 中)直接评估为“字节数据”?
- javascript - Node.JS Express Route 仅针对特定路由导致 404
- javascript - vue:v-html 可以在 js 数组中吗?
- azure - 发送非活动任务或错误的电子邮件通知----Azure Devops
- python - 消息后电报机器人发送错误“出了点问题,请重试”
- php - 如何从下拉列表中存储多个值到php变量中
- json - 如何使用 Apps 脚本从电子表格中获取 json 数组
- python-3.x - Capture parent node id when unique values found in combination
- google-cloud-platform - 如何从 docker 容器连接到扳手模拟器
- mysql - MySQL - 如何使用相同的 FOREIGN KEY 忽略小于 CURRENT_DATE 的记录?