关于SQL的交集查询问题[通俗易懂]

(36) 2023-03-31 14:33

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说关于SQL的交集查询问题[通俗易懂],希望能够帮助你!!!。

场景

数据库内数据如下

 关于SQL的交集查询问题[通俗易懂]_https://bianchenghao6.com/blog__第1张

需求 

条件①    (tag_name = '归属'  AND ag_value IN ( '教育局','六壬','企业' ))

条件②    (tag_name = '城市' AND tag_value IN ('北京', '上海', '福州'))

条件三    (tag_name = '核心中枢' AND tag_value IN ('是'))

我要 获得同时满足条件①和条件②的node_id, 最后的结果应该是aaa和bbb

我要 获得同时满足条件①和条件②和条件③的node_id, 最后的结果应该是aaa

最终结果

planA

SELECT
    d1.node_id
FROM
    dist_node_tag d1,
    dist_node_tag d2,
    dist_node_tag d3
WHERE
    d1.node_id = d2.node_id
AND 
    d1.node_id = d3.node_id
AND (
    (
        d1.tag_name = '归属'
        AND d1.tag_value IN ( '教育局',  '六壬',  '企业')
    )
    AND (
        d2.tag_name = '城市'
        AND d2.tag_value IN ('北京', '上海', '福州')
    )
    AND (
        d3.tag_name = '核心中枢'
        AND d3.tag_value IN ('是')
    )
)

planB 

SELECT
    *
FROM
    (
        SELECT
            node_id,
            count(1) AS count
        FROM
            dist_node_tag
        WHERE
            (
                tag_name = '城市'
                AND tag_value IN ('北京', '上海', '福州')
            )
        OR (
            tag_name = '归属'
            AND tag_value IN ('教育局', '六壬', '企业')
        )
        group by node_id
    ) t
WHERE
    count = 2

 

 

上一篇

已是最后文章

下一篇

已是最新文章

发表回复