如何在MySQL中查找数据类型为数组的列中的重复值<string>

问题描述 投票:0回答:2

我有一个名为 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 ? 

mysql duplicates
2个回答
0
投票

您可以使用 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 现金

0
投票

使用功能

JSON_LENGTH(column_name)

drop table if exists t1;
CREATE TABLE t1 (cid int not null primary key, pay_type JSON);

INSERT INTO t1 VALUES(1, '["Check", "Check"]');
INSERT INTO t1 VALUES(2, '["Cash"]');
INSERT INTO t1 VALUES(3, '["Cash", "Cash"]');
select *  from t1 where JSON_LENGTH(pay_type) > 1;

© www.soinside.com 2019 - 2024. All rights reserved.