mysql SQL中同一表中的数据比较

raogr8fs  于 11个月前  发布在  Mysql
关注(0)|答案(1)|浏览(69)

我有一个名为productfops的表,我有实体,服务和fop等列
| 实体|服务|FOP|
| --|--|--|
| GPL| YouTube|信用|
| GPL|格佩|信用|
| GPL|发挥|借记|
| 加雷什|YouTube|信用|
| 加雷什|格佩|信用|
这是已经存在的数据,并且如果存在与实体和服务(如gpl、gsuit、credit)组合的任何新服务,则应该识别该组合,接下来,与实体、服务、fop(如gpl、YouTube、debit)的组合,因为该组合也不存在,所以应该识别该组合。
需要这样的结果

Entity | services | fop |
|:---- |:------:| -----:|
| Gpl  | YouTube | debit
| Gpl | gsuit | credit |

字符串
请帮忙
我用的脚本

SELECT entity, service, fop
FROM tableA
WHERE (entity, service) IN (
    SELECT entity, service
    FROM tableA
    GROUP BY entity, service
    HAVING COUNT(*) > 1
);


这不起作用,因为已经存在唯一列,因此>1或=1不准确
我尝试的另一个脚本是

CREATE OR REPLACE TABLE b AS
(
    -- Combinations of two columns (entity and service)
    SELECT a.entity, a.service, NULL AS fop
    FROM a
    WHERE CONCAT(a.entity, ' - ', a.service) NOT IN (
        SELECT CONCAT(b.entity, ' - ', b.service)
        FROM b
    )
    UNION ALL
    -- Combinations of three columns (entity, service, and fop)
    SELECT a.entity, a.service, a.fop
    FROM a
    WHERE CONCAT(a.entity, ' - ', a.service, ' - ', a.fop) NOT IN (
        SELECT CONCAT(b.entity, ' - ', b.service, ' - ', b.fop)
        FROM b
    )
)


即使这样也不起作用,因为我正在使用不在同一张table上

svmlkihl

svmlkihl1#

你的问题不太清楚。
如果你想找到当前不在你的表中的不同entityservicesfop值的所有可能组合,你可以交叉连接各个不同的查询以获得所有组合,然后左连接到原始表以查找丢失的组合。类似于这样:

WITH mytable (entity, services, fop) AS (
    VALUES
        ROW('Gpl', 'YouTube', 'credit'),
        ROW('Gpl', 'gpay', 'credit'),
        ROW('Gpl', 'play', 'debit'),
        ROW('Gpil', 'YouTube', 'credit'),
        ROW('Gpil', 'gpay', 'credit')
)
SELECT *
FROM (SELECT DISTINCT entity FROM mytable) e
CROSS JOIN (SELECT DISTINCT services FROM mytable) s
CROSS JOIN (SELECT DISTINCT fop FROM mytable) f
LEFT JOIN mytable m
    ON e.entity = m.entity
    AND s.services = m.services
    AND f.fop = m.fop
WHERE m.entity IS NULL;

字符串
对于给定的样本数据,此输出:
| 实体|服务|FOP|实体|服务|FOP|
| --|--|--|--|--|--|
| GPL|发挥|信用||||
| 加雷什|发挥|信用||||
| 加雷什|发挥|借记||||
| GPL|格佩|借记||||
| 加雷什|格佩|借记||||
| GPL| YouTube|借记||||
| 加雷什|YouTube|借记||||

相关问题