我有一个名为 pay_type 的列,其 data_type :数组字符串,我想查询该列何时具有重复值。
示例:
表_名称:财务
列:customer_id、pay_type
How can I query in mysql to return rows 1 and 3 which have duplicated values in their pay_type ?
您可以使用 JSON_TABLE 将数组元素转换为行:
WITH finance (customer_id, pay_type) AS (
VALUES
ROW(1, '["Check","Check"]'),
ROW(2, '["Cash"]'),
ROW(3, '["Cash","Cash"]')
)
SELECT f.customer_id, t.pay_type
FROM finance f
CROSS JOIN JSON_TABLE(pay_type, '$[*]' COLUMNS ( pay_type VARCHAR(20) PATH '$' )) t
GROUP BY f.customer_id, t.pay_type
HAVING COUNT(*) > 1;
输出:
客户 ID | 支付类型 |
---|---|
1 | 检查 |
3 | 现金 |